如何在 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),解析任何错误,如果发现任何错误消息则大声退出..