Wai "Versuchen Sie, eine App mit ** vscode Remote-Containers ** und ** Docker ** zu entwickeln. Zuerst von ** nginx **. ** Ich kenne Remote-Container, Docker oder nginx überhaupt nicht **, aber irgendwie Naruyaro "
Bereiten Sie das folgende yml vor und bestätigen Sie, dass die bei localhost separat erstellte index.html: 8080 von "docker-compose up -d" angezeigt wird.
docker-compose.yml
version: '3.8'
services:
web:
image: nginx
volumes:
- .:/usr/share/nginx/html
ports:
- "8080:80"
Wenn ich jedoch dasselbe mit Remote-Containern von vscode öffne, wird index.html nicht angezeigt, selbst wenn ich auf localhost: 8080 zugreife.
Die Zeile command: / bin / sh -c" while sleep 1000; do :; done "
wird standardmäßig in die ./. Devcontainer / docker-compose.yml
geschrieben, die automatisch erstellt wird, wenn Remote-Container ausgeführt werden. Es scheint jedoch, dass index.html nicht angezeigt wird, wenn diese Zeile vorhanden ist.
Remote-Verzeichnisstruktur nach Ausführung von Containern
.devcontainer/ # Remote-Wird automatisch durch Ausführen von Containern generiert
devcontainer.json
docker-compose.yml #Dieser Typ hat eine Kommandozeile
docker-compose.yml
index.html
Ich verstehe nicht....
Starten Sie den Nginx-Container mit dem Befehl docker-compose.yml
ohne Befehl: / bin / sh -c" während des Schlafes 1000; do :; done "
, hängen Sie ihn an und drücken Sie denselben Befehl sleep, und er wird ordnungsgemäß ausgeführt ( (Protokoll unten), so dass es den Anschein hat, dass der Befehl command:
im Container keinen Fehler enthält.
root@hoge:/workspace# /bin/sh -c "while sleep 1000; do :; done"
^C
root@hoge:/workspace#
Als ich "docker ps --no-trunc" ausprobierte, war der "BEFEHL", als ich "docker-compose up -d" manuell ausführte, "/ docker-entrypoint.sh nginx -g'daemon off;" Das Ding. Wird dies durch "/ bin / sh -c" im Schlaf 1000 überschrieben? Do:; done ""?
web_tmp > docker-compose up -d
Creating web_tmp_web_1 ... done
web_tmp >
web_tmp > docker ps --no-trunc
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS NAMES
8f7c7a3300bd7e9894f387b39cc904776858893e337f849ecee5dd69e6ad9291 nginx "/docker-entrypoint.sh nginx -g 'daemon off;'"
2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp web_tmp_web_1
web_tmp >
Als ich command: /docker-entrypoint.sh nginx -g'daemon off; '
in docker-compose.yml
setzte, wurde index.html
angezeigt. Das ist die Ursache!
Es scheint, dass der Nginx-Daemon nicht gestartet wurde, weil "docker-entrypoint.sh", das standardmäßig implizit ausgeführt wird, mit einem anderen Befehl überschrieben wurde. Ich habe es vorerst gelöst! Yay! !!
--Event: index.html verschwindet, wenn "docker-compose.yml" von nginx den Befehl "/ bin / sh -c" hat, während der Schlaf 1000; do:; done ""
COMMAND
beim Starten des Nginx-Containers ist vom Standard (= /docker-entrypoint.sh nginx -g'daemon off; '
) bis / bin / sh -c" während des Ruhezustands 1000; do: Weil es von done "
überschrieben wird
--Korrekturmaßnahme: Kommentieren Sie den Befehl aus allen docker-compose.yml aus. (Alternativ können Sie den Befehl :docker-entrypoint.sh nginx -g'daemon off; '
verwenden. Normalerweise ist dies nicht der Fall.)