【发布时间】:2018-04-18 12:34:57
【问题描述】:
我在从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已成功运行。 -
docker-compose run/exec确实返回正在运行的容器的退出代码 -
我相信这是因为您使用
exec和run定义了一个特定的容器。但是使用docker compose up,您可能拥有一组容器。例如,如果您的案例中有另一个test_container_2以0退出,那么您希望从echo $?得到什么? -
为什么不尝试使用
docker inspect获取容器的退出代码? -
是的,我想我必须这样做
标签: docker docker-compose exit exit-code terminate