![](/img/trans.png)
[英]docker-compose of Nginx image doesn't work when the docker-compose.yml file is moved
[英]Running nodejs with docker-compose doesn't work but work with docker run command
我正在尝试使用 Nodejs 官方 docker 映像运行一个容器。 全部使用下面的“docker run”命令:
docker run -it -p 8080:8080 --name nodejs --volume ${PWD}/app:/usr/node/app --workdir /usr/node/app node:12 bash
但我会使用 docker-compose 所以我尝试这个:
version: "3"
services:
nodejs:
container_name: nodejs
image: node:12
working_dir: /usr/node/app
volumes:
- ${PWD}/app:/usr/node/app
ports:
- 8080:8080
但是当我运行 > docker-compose up
Creating network "node_default" with the default driver
Creating nodejs ... done
Attaching to nodejs
nodejs exited with code 0
我错过了什么?
运行 docker run 命令时,您是在覆盖 docker 容器中的 CMD,并将自己直接附加到容器的 shell。
docker run -it -p 8080:8080 --name nodejs --volume ${PWD}/app:/usr/node/app --workdir /usr/node/app node:12 bash
然而,当使用Kubernetes
docker-compose
或Kubernetes
,事情就没有那么简单了。 他们将启动容器并执行ENTRYPOINT
和CMD
。 一旦这些命令退出,容器就会退出。 在您的docker-entrypoint.sh node
docker-compose
情况下,它正在执行docker-entrypoint.sh node
,该docker-entrypoint.sh node
将立即退出。
您可以通过运行docker-compose ps
来验证这一点,并查看容器状态为Exit 0
。
如果你想让你的容器永远运行而不退出,你可以更新你的docker-compose
文件是这样的
version: "3"
services:
nodejs:
container_name: nodejs
image: node:12
working_dir: /usr/node/app
volumes:
- ${PWD}/app:/usr/node/app
ports:
- 8080:8080
entrypoint: bash
command:
- -c
- |
tail -f /dev/null
之后,您应该运行docker-compose up -d
以在detach
模式下运行,这使得容器在后台运行,并验证它是否正在使用docker-compose ps
运行。
为了进入你的容器,你可以运行命令
docker exec -it nodejs bash
注意:如果你运行docker-compose up
,看起来一切都挂了,但事实上,你看到的是那个容器的stdout
,它什么也不打印。 Ctrl+C
将使您退出并同时停止容器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.