【发布时间】:2019-11-25 12:54:33
【问题描述】:
我有一个大型 Java 应用程序,在不同的类中有 5 个主要方法。我想将此应用程序作为 docker 容器运行。从DockerHub OpenJDK Image,我开始我的Dockerfile如下
FROM openjdk:latest
COPY . /usr/src/APP
WORKDIR /usr/src/APP`
我想添加行来运行主要方法。如果没有 Docker,我使用以下行运行应用程序
echo 'Starting App'
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class1 >>
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class2 >>
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class3 >>
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class4 >>
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class5 >>
/path/to/nohup/nohup.out 2>&1 &
echo 'App Started Successfully'`
是否可以在一个 docker 容器中运行上述场景?如果可能,Dockerfile中只能有一个ENTRYPOINT和CMD指令怎么办?
【问题讨论】:
-
全部加到一个
.sh并将这个.sh 添加到CMD -
@LinPy 如果我在这种情况下使用 CMD 或 ENTRYPOINT 会有什么不同吗?
-
@RandaElBehery。有关 CMD 和 ENTRYPOINT 之间的差异,请参阅其他答案:stackoverflow.com/questions/21553353/…
-
Docker 文档解释了如何使用脚本或使用 supervisord:docs.docker.com/config/containers/multi-service_container。一般来说,我会使用
supervisord而不是脚本,因为它可以监视和重新启动死掉的服务。
标签: java docker dockerfile