gpt4 book ai didi

docker - 在 docker-compose 中执行 wait-forit 脚本的正确方法

转载 作者:行者123 更新时间:2023-12-02 07:13:35 32 4
gpt4 key购买 nike

我有一个wait-for-it脚本添加到我的 docker 镜像中,然后在 docker-compose 中执行它。使用此设置可以正常工作:

在 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 + CMD我的 dockerfile.我不想从 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"]

执行 wait-for-it 脚本后,我的 docker-compose.yaml 需要如何看待才能以正确的方式执行此操作?

所以我想在执行docker ps时得到这个输出:

COMMAND
"/entrypoint.sh np..."

我在我的 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

关于docker - 在 docker-compose 中执行 wait-forit 脚本的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42434125/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com