如何在 java 应用程序直接从 docker 入口点启动之前 运行 脚本?
How to run script before java application start directly from docker entrypoint?
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
这是我当前在 Dockerfile
中的定义
问题:是否可以在此之前简单地执行另一个 .sh
脚本,而不必编写额外的 entrypoint.sh
脚本?
伪代码:
ENTRYPOINT ["init.sh", "&&", "java", "org.springframework.boot.loader.JarLauncher"]
而不是:ENTRYPOINT[ "wrapper.sh" ]
首先 运行 脚本的一个简单方法是使用 shell 版本的 ENTRYPOINT 指令而不是您使用的 exec 版本(阅读 https://docs.docker.com/engine/reference/builder/#entrypoint 了解更多信息) .
运行 a shell 允许您 运行 多个命令,用 &&
分隔它们。所以你可以做
ENTRYPOINT init.sh && java org.springframework.boot.loader.JarLauncher
如果启动容器的过程变得更加复杂,您应该像 David 建议的那样创建一个入口点包装器脚本。
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
这是我当前在 Dockerfile
问题:是否可以在此之前简单地执行另一个 .sh
脚本,而不必编写额外的 entrypoint.sh
脚本?
伪代码:
ENTRYPOINT ["init.sh", "&&", "java", "org.springframework.boot.loader.JarLauncher"]
而不是:ENTRYPOINT[ "wrapper.sh" ]
首先 运行 脚本的一个简单方法是使用 shell 版本的 ENTRYPOINT 指令而不是您使用的 exec 版本(阅读 https://docs.docker.com/engine/reference/builder/#entrypoint 了解更多信息) .
运行 a shell 允许您 运行 多个命令,用 &&
分隔它们。所以你可以做
ENTRYPOINT init.sh && java org.springframework.boot.loader.JarLauncher
如果启动容器的过程变得更加复杂,您应该像 David 建议的那样创建一个入口点包装器脚本。