由docker-compose启动的Docker容器状态始终会退出

时间:2019-06-28 10:06:21

标签: docker docker-compose

这是我的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)

有什么主意吗?

2 个答案:

答案 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"]

这样,容器将一直保持忙碌状态,直到您将其停止为止。