我有一个大型java应用程序,在不同的类中有5个主要方法。我想将此应用程序作为docker容器运行。从DockerHub OpenJDK映像中,我启动了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
指令时,如何实现这一点?
“如何从一个映像运行多个进程”的通常答案是运行多个容器。鉴于您展示的Dockerfile,这相当简单:
# Build the image (once)
docker build -t myapp .
# Then run the five containers as background processes
docker run -d --name app1 java .:./App.jar path.to.main.class1
docker run -d --name app2 java .:./App.jar path.to.main.class2
docker run -d --name app3 java .:./App.jar path.to.main.class3
docker run -d --name app4 java .:./App.jar path.to.main.class4
docker run -d --name app5 java .:./App.jar path.to.main.class5
因为所有的命令都非常相似,所以您可以编写一个脚本来运行它们
#!/bin/sh
# Use the first command-line argument as the main class
MAIN_CLASS="$1"
shift
# Can also set JAVA_OPTS, other environment variables, ...
# Run the application
exec java -jar App.jar "path.to.main.$MAIN_CLASS" "$@"
将其复制到图像中
COPY run_main.sh /usr/local/bin
然后当你启动容器时,只需运行包装
docker run -d --name app1 run_main.sh class1
问题内容: 我正在运行Eclipse 3.5,并且经常遇到一个问题,为了测试程序,我必须单击6-7次,而不是单击“播放”按钮。 问题是我正在编写网络应用程序,因此我具有“服务器”的运行配置和“客户端”的运行配置。然后要测试我的程序,我必须先启动服务器,再启动一个客户端,然后再启动另一个客户端,等等。是否有将其自动化为一个运行配置的方法? 问题答案: 您可以直接调用任何类的main方法。例如,如果您
问题内容: 执行多个: 加入他们: 每个层都创建一个图层,因此我一直以为图层越少越好,因此越好。 当a 删除前一个(即)添加的内容时,这显然是正确的,但是在每个都添加了内容的情况下,我们需要考虑以下几点: 层应该只是在前一层之上添加差异,因此如果后一层没有删除在前一层中添加的内容,那么这两种方法之间就没有太多的磁盘空间节省优势… 层是从Docker Hub并行拉出的,因此,尽管可能稍大一些,但理论
我的Java包中有四个类。只有一个类具有方法。 当我运行方法时,我如何运行这四个类中的所有方法? 以下是我的课程: 第一类。JAVA 第二类。爪哇 第三类。JAVA 样品。JAVA
是否可以从Dockerfile构建映像并使用单个命令运行它 有一个命令来构建Dockerfile,还有来运行映像。 有没有这两个命令的任何组合,使它更容易构建和运行只有一个命令?
我正在尝试在我的环境中测试和使用docker。这是我访问tomcat时的Dockerfile(),我发现这个问题。 注= 建筑 跑 Dockerfile 一件奇怪的事情是,如果我只设置而不设置,我就可以访问或我的应用程序我的文件中是否缺少任何内容? 谷歌搜索=
问题内容: 因此,我的目标是让函数启动自己的线程,以便可以并行运行,而不必等待上一个线程完成。问题在于,它似乎不是多线程的(意味着一个线程在另一个线程开始之前就完成了)。 我也有该函数的内部,但似乎启动的线程的标识与从其运行python脚本的主线程相同。我认为我的方法不正确。 问题答案: 这是常见错误,容易出错。 只需在主线程中一次执行您的函数,然后将(我想为您函数的返回值)作为函数传递给线程,这