如何在 docker-compose up -d 期间大声失败?
How to fail loudly during docker-compose up -d?
使用 docker-compose up -d
,当我的一个容器无法启动时(即 运行 命令退出并显示错误代码),它会安静地失败 - 我怎样才能让它大声失败?
(我的思考方式是否正确?我的最终目标是将 Docker 用于我的开发环境。我希望能够启动我的环境并立即收到错误通知。我想尽可能地坚持 Docker 的真实路径,并且犹豫是否要依赖其他工具,例如 screen/tmux)
由于您运行将其分离 (-d),docker-compose 仅生成容器并退出,而不会监控任何问题。如果您 运行 前景中的容器具有:
docker-compose up --abort-on-container-exit
对于任何容器问题,这应该会给您一个非常明确的错误。否则,我建议研究一些其他更高级的调度程序,它们监视 运行ning 容器以从故障中恢复(例如通用控制平面或 Kubernetes)。
更新:如果您想在 docker-compose up -d
之外编写脚本,您可以执行
docker events -f "container=${compose_prefix}_" -f "event=die"
如果有任何输出在那里,你有一个容器下降。还有 docker-compose events | grep "container die"
.
如 compose/cli/main.py#L66-L68 所示,docker-compose 应该在 (Dockerfile) build 上失败:
except BuildError as e:
log.error("Service '%s' failed to build: %s" % (e.service.name, e.reason))
sys.exit(1)
由于 -d
(Detached mode, which runs containers in the background) is incompatible with --abort-on-container-exit
,"docker way" 将是:
- 在脚本中包装
docker compose up -d
- 向该脚本添加一个
docker-compose logs
),解析任何错误,如果发现任何错误消息则大声退出..
使用 docker-compose up -d
,当我的一个容器无法启动时(即 运行 命令退出并显示错误代码),它会安静地失败 - 我怎样才能让它大声失败?
(我的思考方式是否正确?我的最终目标是将 Docker 用于我的开发环境。我希望能够启动我的环境并立即收到错误通知。我想尽可能地坚持 Docker 的真实路径,并且犹豫是否要依赖其他工具,例如 screen/tmux)
由于您运行将其分离 (-d),docker-compose 仅生成容器并退出,而不会监控任何问题。如果您 运行 前景中的容器具有:
docker-compose up --abort-on-container-exit
对于任何容器问题,这应该会给您一个非常明确的错误。否则,我建议研究一些其他更高级的调度程序,它们监视 运行ning 容器以从故障中恢复(例如通用控制平面或 Kubernetes)。
更新:如果您想在 docker-compose up -d
之外编写脚本,您可以执行
docker events -f "container=${compose_prefix}_" -f "event=die"
如果有任何输出在那里,你有一个容器下降。还有 docker-compose events | grep "container die"
.
如 compose/cli/main.py#L66-L68 所示,docker-compose 应该在 (Dockerfile) build 上失败:
except BuildError as e:
log.error("Service '%s' failed to build: %s" % (e.service.name, e.reason))
sys.exit(1)
由于 -d
(Detached mode, which runs containers in the background) is incompatible with --abort-on-container-exit
,"docker way" 将是:
- 在脚本中包装
docker compose up -d
- 向该脚本添加一个
docker-compose logs
),解析任何错误,如果发现任何错误消息则大声退出..