在docker-compose中执行wait-for-it脚本的正确方法
我有一个wait-for-it
脚本添加到我的docker图像,我执行它在我的docker组成。 它适用于这个设置:
在docker-compose中:
entrypoint: ./wait-for-it.sh mysql
等待脚本:
...checks >&2 echo "MySQL is up - executing command" exec ../../../entrypoint.sh npm start
执行docker ps
时的命令输出是:
COMMAND "./wait-for-it.sh ..."
这工作正常,但我不喜欢'设置'。 我希望wait-for-it.sh
被执行,如果成功,我想进入ENTRYPOINT
+我的dockerfile的CMD
。 我不想在我的wait-for-it.sh中开始我的入口点硬编码
所以我改变了我的wait-for-it.sh脚本:
>&2 echo "MySQL is up - executing command" exec "$@"
在我的dockerfile里面我有:
ENTRYPOINT ["/entrypoint.sh"] EXPOSE 2368 CMD ["npm", "start"]
我的docker-compose.yaml在执行wait-for-it脚本后需要如何正确执行这个操作?
所以我想在执行docker ps
时得到这个输出:
COMMAND "/entrypoint.sh np..."
我在docker-compose.yaml
尝试了这样docker-compose.yaml
但是没有成功:
entrypoint: ./wait-for-it.sh mysql /entrypoint.sh command: ["npm", "start"]
你会用这样的脚本;
#!/usr/bin/env bash while true; do if which "$1" >/dev/null; then echo exists break else echo does not exist // sleep 3 seconds sleep 3 fi done