【问题标题】:Ignore container exit when using docker-compose使用 docker-compose 时忽略容器退出
【发布时间】:2018-10-14 16:37:54
【问题描述】:

我正在使用 docker-compose 设置测试基础架构。我想使用 docker-compose 选项 --exit-code-from 从正在运行测试的容器返回退出代码。但是,我还有一个容器,它使用 sequelize cli 在我的数据库容器上运行迁移。迁移完成后,此迁移容器以代码 0 退出,然后我的测试运行。这会导致--exit-code-from--abort-on-container-exit 选项出现问题。迁移容器退出时有没有办法忽略?

【问题讨论】:

    标签: docker docker-compose jestjs sequelize-cli


    【解决方案1】:

    --exit-code-from暗示--abort-on-container-exit,根据documentation

    --abort-on-container-exit 如果任何容器停止,则停止所有容器。

    但你可以试试:

    docker inspect <container ID> --format='{{.State.ExitCode}}'
    

    您可以使用

    获取所有(包括停止的)容器的列表
    docker container ls -a
    

    这是一个很好的例子:Checking the Exit Code of Stopped Containers

    【讨论】:

    • 谢谢 - 现在我最终在迁移运行后运行 tail -f /dev/null 但这似乎是一个更好的解决方案
    • 另一个想法可能是使用初始化/进程控制服务,例如supervisord.org 在内部工作完成后保持您的迁移容器正常运行。但是不确定,如果这对您来说是一个很好的解决方案,那么开销可能会太大。但是,如果您还没有,请查看 supervisord,特别是如果您计划在一个容器中运行多个进程。
    • 在迁移或临时容器结束时尝试 sleep 300,这“保证”测试在 5 分钟后失败,因为它会退出并被 --abort-on-container-exit 捕获。
    猜你喜欢
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多