【问题标题】:How to run shell file as entrypoint when using docker image with tomcat:9.0.45-jdk8-adoptopenjdk-hotspot in a dockerfile?在dockerfile中使用带有tomcat:9.0.45-jdk8-adoptopenjdk-hotspot的docker镜像时如何将shell文件作为入口点运行?
【发布时间】:2021-05-17 14:54:58
【问题描述】:
我正在使用 docker image tomcat:9.0.45-jdk8-adoptopenjdk-hotspot 创建一个 docker 文件。要运行 dockerfile,我使用命令 docker run -it -p 8888:8080 tomcatcustom ,这会打开 tomcat 服务器。
我想运行另一个自定义 .sh 文件以及通过运行 docker 映像执行的 tomcat 服务器。如何在我创建的 dockerfile 中定义入口点,以便我可以同时执行 tomcat 和我的 .sh 文件?
或者还有其他选择吗?
【问题讨论】:
标签:
docker
docker-compose
dockerfile
【解决方案1】:
Dockerfile 只能有一个执行的入口点,但没有什么能阻止您将脚本作为入口点来运行您的自定义脚本和 tomcat。
例如
如果你有一个目录
Dockerfile
custom.sh // your custom script
start.sh
start.sh 在哪里
#!/usr/bin/env bash
./custom.sh &
catalina.sh run
而Dockerfile 是
FROM tomcat:9.0.45-jdk8-adoptopenjdk-hotspot
COPY start.sh .
COPY custom.sh .
CMD "./start.sh"
在这种情况下,custom.sh 在后台执行(使用&),以便并行启动 tomcat。