延迟Docker容器RUN直到构建tox环境

时间:2018-05-17 01:33:22

标签: docker tox

我试图找到一种方法来延迟docker容器,直到ENTRYPOINT中的任务完成。为了进一步解释,我有一个具有入口点

的docker文件
ENTRYPOINT ["bash", "-c", "tox", "-e", "docker-server"]

当我使用

运行容器时
Docker run -d -t -p 127.0.0.1:8882:8882 datawarehouse

它立即使容器处于tox命令仍在构建环境的位置。这样做的问题是,如果我触发cron作业或立即运行python代码,它将失败,因为tox环境仍处于构建阶段。我想避免在ENTRYPOINT任务完成之前运行任何东西,这可以在docker文件或run命令中实现吗?

2 个答案:

答案 0 :(得分:2)

是的,在docker-compose文件中,您可以将其设置为休眠状态,或者您可以定义依赖关系。

https://docs.docker.com/compose/startup-order/

https://8thlight.com/blog/dariusz-pasciak/2016/10/17/docker-compose-wait-for-dependencies.html

答案 1 :(得分:0)

我没有一个优雅的解决方案,但这就是我所做的。

RUN <your dependencies>
# Then add a second RUN command with a sleep at the beginning:
RUN sleep 400 && gcloud dataproc jobs submit xxxxxx

每个RUN命令将在干净的板上的单独容器层上运行,因此sleep &&实际入口点命令作为一个逻辑命令一起运行。 但是正如您所看到的,这是硬编码的,请相应地更改睡眠时间。