这是我的docker-compose.yml:
version: "3"
services:
test123:
build: .
container_name: "test123"
我的Dockerfile:
FROM alpine:3.9
CMD ["/bin/sh"]
当我跑步时:
docker run -it alpine:3.9
工作正常。但是当我从docker-compose运行时:
docker-compose up -d
容器的状态始终为:Exited (0)
有什么主意吗?
答案 0 :(得分:2)
您的容器启动并立即退出,因为/bin/sh
停止了。这就是容器的工作方式。当他们的PID 1
停止时,他们退出。因此,为了防止sh
退出,您必须使用:
tty: true
stdin_open: true
这些选项与您在-it
命令中已经使用的等效docker run ...
。
来自docs:
--tty , -t Allocate a pseudo-TTY --interactive , -i Keep STDIN open even if not attached
更新后的docker-compose.yml
文件:
version: "3"
services:
test123:
build: .
container_name: "test123"
tty: true
stdin_open: true
答案 1 :(得分:0)
难怪您的容器退出(状态为0,表示success
)。
容器必须保持运行才能保持活动状态,因此运行的命令必须永不结束。这是一种解决方法:
Dockerfile:
FROM alpine:3.9
CMD ["tail", "-f", "/dev/null"]
这样,容器将一直保持忙碌状态,直到您将其停止为止。