docker compose以延迟容器的构建和启动

时间:2020-06-04 01:22:46

标签: docker-compose

我有几个按顺序运行的容器。

我正在使用的方法是确保下一个仅在当前运行一次之后开始。

我意识到其中一个容器要完成一些cron工作, 所以下一个容器将要导入正确的数据。...

在这种情况下,我不能仅仅依赖于参数。

如何延迟下一个容器的启动时间?比如说等5分钟。

示例docker compose:

  test1:
    networks:
      - test
    image: test1
    ports:
      - "8115:8115"
    container_name: test1

  test2:
    networks:
      - test
    image: test2
    depends_on:
      - test1
    ports:
      - "8160:8160"

2 个答案:

答案 0 :(得分:0)

您可以使用入口点脚本,如下所示(需要安装netcat):

until nc -w 1 -z test1 8115; do
  >&2 echo "Service is unavailable - sleeping"
  sleep 1
done
sleep 2
>&2 echo "Service is up - executing command"

并通过command指令在服务(在docker-compose文件中)或Dockerfile(CMD指令)中执行它。

答案 1 :(得分:0)

我在 Dockerfile 中添加了它(因为它只是为了快速测试):

CMD sleep 60 && node server.js

一个 60 秒的睡眠就成功了,因为 node.js 部分在数据库转储初始化脚本完全执行之前就已经执行了。