我在使用 docker-compose up
命令时遇到了获取退出代码的问题。
我的容器非常简单,只运行一个总是以 1 退出的脚本:
#!/usr/bin/env sh
exit 1
我的 Dockerfile:
FROM mhart/alpine-node:6
RUN mkdir /app
WORKDIR /app
我的 docker-compose.yml 文件如下:
version: '2'
services:
test_container:
container_name: test_container
build: .
volumes:
- ${PWD}/run.sh:/app/run.sh
entrypoint: ["/app/run.sh"]
当我使用以下命令运行它时:
docker-compose -f docker-compose.yml up --force-recreate test_container
我可以在日志中看到:
Recreating test_container ...
Recreating test_container ... done
Attaching to test_container
test_container exited with code 1
但是当我执行 echo $?
命令时,返回的是0
。
我的Docker版本是17.09.0-ce,构建版本为afdb6d4。运行在OSX 10.12.6上。
我做错了什么吗?这是否是已知问题(我在网上找不到相关信息)?
1
,因为docker-compose
已经成功运行了。 - tgogosdocker-compose run/exec
命令会返回被运行容器的退出码。 - Daniel Gruszczykexec
和run
定义了一个特定的容器。但是使用docker compose up
,你可能会有一组容器。例如,如果你在你的情况下有另一个名为test_container_2
的容器以退出状态码0
退出,那么你期望从echo $?
得到什么呢? - tgogosdocker inspect
命令获取容器的退出代码? - tgogos