如何从 docker-compose 命令 运行 2 个不同的命令:
How to run 2 different commands from docker-compose command:
我想从 docker-compose 为我的服务 运行 2 个不同的命令。
- bash script.sh
- 配置/etc/config.yaml
目前,我的 docker-compose 如下所示。我希望 bash 脚本在配置命令
之后变为 运行
docker-compose.yaml:
services:
API:
build: .
ports:
- 8080:8080
environment:
- "USER=${USER}"
- "PASSWORD=${PASSWORD}"
volumes:
- ./conf/config.yaml:/etc/api.yaml
command: ["-config", "/etc/api.yaml"]
编写新的入口点脚本。
#!/bin/bash
/bin/api "$@"
# perhaps
source /script.sh
# or exec
exec /script.sh
在构建时将其复制到您的图像中。
COPY --chmod=755 entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
这将导致您在撰写文件中传递的参数被传递给 /bin/api,然后执行您的脚本。
我不确定这是否真的有用。 API 命令看起来像是在启动一个 long-running 进程,因此您的脚本可能永远不会真正 运行.
你也可以在你的入口点做这样的事情。
#!/bin/bash
run_script(){
sleep 5
source /script.sh
}
run_script &
exec /bin/api "$@"
虽然它会隐藏该脚本的错误,所以它不是很可靠。
这将 运行 函数在后台运行,它会休眠 5 秒以便 API 有时间启动,然后 运行 脚本同时 API是运行宁。
很难说,在不知道你的脚本在做什么的情况下,什么是好的解决方案。第二个建议感觉确实有点hacky。
我想从 docker-compose 为我的服务 运行 2 个不同的命令。
- bash script.sh
- 配置/etc/config.yaml
目前,我的 docker-compose 如下所示。我希望 bash 脚本在配置命令
之后变为 运行docker-compose.yaml:
services:
API:
build: .
ports:
- 8080:8080
environment:
- "USER=${USER}"
- "PASSWORD=${PASSWORD}"
volumes:
- ./conf/config.yaml:/etc/api.yaml
command: ["-config", "/etc/api.yaml"]
编写新的入口点脚本。
#!/bin/bash
/bin/api "$@"
# perhaps
source /script.sh
# or exec
exec /script.sh
在构建时将其复制到您的图像中。
COPY --chmod=755 entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
这将导致您在撰写文件中传递的参数被传递给 /bin/api,然后执行您的脚本。
我不确定这是否真的有用。 API 命令看起来像是在启动一个 long-running 进程,因此您的脚本可能永远不会真正 运行.
你也可以在你的入口点做这样的事情。
#!/bin/bash
run_script(){
sleep 5
source /script.sh
}
run_script &
exec /bin/api "$@"
虽然它会隐藏该脚本的错误,所以它不是很可靠。
这将 运行 函数在后台运行,它会休眠 5 秒以便 API 有时间启动,然后 运行 脚本同时 API是运行宁。
很难说,在不知道你的脚本在做什么的情况下,什么是好的解决方案。第二个建议感觉确实有点hacky。