我有几个按顺序运行的容器。
我正在使用的方法是确保下一个仅在当前运行一次之后开始。
我意识到其中一个容器要完成一些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"
答案 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 部分在数据库转储初始化脚本完全执行之前就已经执行了。