Die Verwendung von depends_on zum Sortieren von Containern löst das Abhängigkeitsproblem zwischen Containern nicht perfekt. Der Grund dafür ist, dass depends_on nur sicherstellen kann, dass der Container in den Status „Ausführen“ wechselt, nicht in den Status „Abgeschlossen“ (ich weiß nicht, wie ich das beschreiben soll). Im Internet wurden Lösungen aufgelistet, die Wait-for-it oder Wait-for verwenden, um beim Start auf die Container zuzugreifen, die zuerst gestartet werden müssen, und diese zu starten, wenn der Zugriff erfolgreich ist. Sie sind jedoch nicht detailliert genug und viele von ihnen haben sogar denselben Inhalt (hier möchte ich mich über die chaotische Umgebung beschweren). Vielleicht bin ich dumm, ich habe einen Tag gebraucht, um es zu lösen, deshalb zeichne ich es hier auf. Ich habe Text:Die Anforderung besteht darin, eine gepackte AR-Datei in Nacos zu registrieren, aber Nacos startet langsam, sodass sequentielle Einstellungen erforderlich sind. Löschen Sie die erforderlichen JAR-Dateien auf der virtuellen Maschine oder dem Server. Als nächstes schreiben Sie VON openjdk:8-jre // Basierend auf openjdk COPY wait-for . //Kopiere wait-for in die virtuelle Maschine RUN apt-get update //Aktualisiere Quelle, RUN apt-get install netcat -y // Installiere netcat, wait-for erfordert die Verwendung von WORKDIR /app // Setze den Zielpunkt ADD course.jar course.jar // Füge die JAR-Datei zur virtuellen Maschine hinzu EXPOSE 8002 // Der Port, der freigegeben werden soll Meine Konfiguration basiert auf dem Bild und der Codeblock dient zum besseren Verständnis. Ich denke, da sollte es keinen Unterschied geben. Docker-Compose Version: '3.0' Leistungen: nacos: Bild: nacos/nacos-server:1.1.4 Containername: nacos Häfen: - „8848:8848“ Umfeld: MODUS: Standalone # Nacos-Einzelknoten läuft Kurs: Erstellen: /root/ Containername: Kurs Häfen: - "18002:18002" hängt ab von: -nacos Befehl: ["sh", "warten auf", "nacos:8848", "--", "java", "-jar", "course.jar"] Ich werde hier nicht zu sehr ins Detail gehen, es unterscheidet sich nicht sehr vom Üblichen. In dem Beitrag, den ich zuvor gefunden habe, wurde die Dockerfile-Datei nicht gepostet. Das Wichtigste hier ist, In meinem #!/bin/sh # Die MIT-Lizenz (MIT) # # Copyright (c) 2017 Eficode Oy # # Die Genehmigung wird hiermit kostenlos an jede Person erteilt, die eine Kopie erhält # dieser Software und der dazugehörigen Dokumentationsdateien (die „Software“), um # an der Software ohne Einschränkung, insbesondere die Rechte # zu verwenden, zu kopieren, zu ändern, zusammenzufügen, zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen # Kopien der Software, und um Personen, denen die Software zur Verfügung gestellt wird, # hierfür vorgesehen, vorbehaltlich der folgenden Bedingungen: # # Der obige Copyright-Vermerk und dieser Genehmigungsvermerk müssen in allen # Kopien oder wesentliche Teile der Software. # # DIE SOFTWARE WIRD „WIE BESEHEN“ BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER # STILLSCHWEIGEND, EINSCHLIESSLICH ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTGÄNGIGKEIT, # EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL # AUTOREN ODER COPYRIGHTINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE # HAFTUNG, OB AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, AUS # AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER VERWENDUNG ODER ANDEREN # SOFTWARE. setzen -- "$@" -- "$TIMEOUT" "$QUIET" "$PROTOCOL" "$HOST" "$PORT" "$result" TIMEOUT=60 RUHIG=0 # Das Protokoll, mit dem die Anfrage gestellt werden soll, entweder „tcp“ oder „http“ PROTOKOLL="tcp" echoerr() { wenn [ "$QUIET" -ne 1 ]; dann printf "%s\n" "$*" 1>&2; fi } Verwendung() { Beendigungscode="$1" Katze << VERWENDUNG >&2 Verwendung: $0 Host:Port|URL [-t Zeitüberschreitung] [-- Befehlsargumente] -q | --quiet Keine Statusmeldungen ausgeben -t TIMEOUT | --timeout=timeout Timeout in Sekunden, Null für kein Timeout -- COMMAND ARGS Befehl mit Argumenten ausführen, nachdem der Test abgeschlossen ist VERWENDUNG beenden "$exitcode" } warte_auf() { Fall "$PROTOCOL" in TCP wenn ! Befehl -v nc >/dev/null; dann echoerr 'nc-Befehl fehlt!' Ausfahrt 1 fi ;; wget) wenn ! Befehl -v wget >/dev/null; dann echoerr 'wget-Befehl fehlt!' Ausfahrt 1 fi ;; esac während :; tun Fall "$PROTOCOL" in TCP nc -w 1 -z "$HOST" "$PORT" > /dev/null 2>&1 ;; http) wget --timeout=1 -q "$HOST" -O /dev/null > /dev/null 2>&1 ;; *) echoerr "Unbekanntes Protokoll '$PROTOCOL'" Ausfahrt 1 ;; esac Ergebnis=$? wenn [ $result -eq 0 ] ; dann wenn [ $# -gt 7 ] ; dann für Ergebnis in $(seq $(($# - 7))); tun Ergebnis=$1 Schicht setze -- "$@" "$ergebnis" Erledigt TIMEOUT=$2 QUIET=$3 PROTOKOLL=$4 HOST=$5 PORT=$6 Ergebnis=$7 Schicht 7 Ausführung "$@" fi Ausfahrt 0 fi wenn [ "$TIMEOUT" -le 0 ]; dann brechen fi TIMEOUT=$((TIMEOUT - 1)) Schlaf 1 Erledigt echo "Zeitüberschreitung beim Vorgang" >&2 Ausfahrt 1 } während :; machen Fall "$1" in http://*|https://*) HOST="$1" PROTOKOLL="http" Schicht 1 ;; *:* ) HOST=$(printf "%s\n" "$1"| cut -d : -f 1) PORT=$(printf "%s\n" "$1"| cut -d : -f 2) Schicht 1 ;; -q | --quiet) RUHIG=1 Schicht 1 ;; -Q-*) RUHIG=0 echoerr "Unbekannte Option: $1" Verwendung 1 ;; -Q*) RUHIG=1 Ergebnis=$1 Schicht 1 setzen -- -"${result#-q}" "$@" ;; -t | --timeout) TIMEOUT="$2" Schicht 2 ;; -T*) TIMEOUT="${1#-t}" Schicht 1 ;; --timeout=*) ZEITÜBERSCHREITUNG="${1#*=}" Schicht 1 ;; --) Schicht brechen ;; --helfen) Nutzung 0 ;; -*) RUHIG=0 echoerr "Unbekannte Option: $1" Verwendung 1 ;; *) RUHIG=0 echoerr "Unbekanntes Argument: $1" Verwendung 1 ;; esac Erledigt wenn ! [ "$TIMEOUT" -ge 0 ] 2>/dev/null; dann echoerr "Fehler: ungültiges Timeout '$TIMEOUT'" Verwendung 3 fi Fall "$PROTOCOL" in TCP wenn [ "$HOST" = "" ] || [ "$PORT" = "" ]; dann echoerr "Fehler: Sie müssen zum Testen einen Host und einen Port angeben." Verwendung 2 fi ;; http) wenn [ "$HOST" = "" ]; dann echoerr "Fehler: Sie müssen zum Testen einen Host angeben." Verwendung 2 fi ;; esac warte_auf "$@" Dies ist das Ende dieses Artikels über die Lösung des Depends_on-Reihenfolgeproblems in Docker-Compose. Weitere relevante Inhalte zur Depends_on-Reihenfolge von Docker-Compose finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: CSS 3.0 Text Hover Jump Spezialeffekte-Code
Es handelt sich hauptsächlich um ein CSS-Stilsteue...
Inhaltsverzeichnis 1. Reagieren.Children.map 2. R...
Der <area>-Tag definiert einen Bereich in e...
Im täglichen Geschäftsleben gibt es zwei gängige ...
Inhaltsverzeichnis Vorwort: Systemanforderungen: ...
In diesem Artikel zeige ich Ihnen, wie Sie i3 auf...
Bevor wir über OO, Entwurfsmuster und die vielen o...
Inhaltsverzeichnis 0. Hintergrund 1. Installation...
Geben Sie der Zeit Zeit und lassen Sie die Vergan...
Häufig verwendeter JavaScript-Code zum Erkennen d...
Im Allgemeinen wird das Colspan-Attribut des <...
Datenbankanwendungen sind ein unverzichtbarer Bes...
Inhaltsverzeichnis 1. Isolationsstufe LESEN SIE U...
Inhaltsverzeichnis Einfache CASEWHEN-Funktion: Di...
1. Downloadadresse für das Flash-Plug-in-Paket: h...