使用Docker执行一个简单的Java应用程序

问题描述 投票:0回答:1

新的docker实现,在研发后尝试。

要完成的任务: - 通过写CRON在预定时间(即5分钟)后运行码头。

我编写了一个简单的java应用程序,它只包含一个println语句。我想使用Docker执行项目。

我的Dockerfile

FROM openjdk:8-jre-alpine
RUN mkdir /etc/test/
RUN chmod 777 /etc/test/
COPY /home/administrator/Documents/LearningWorkspace/DockerTesting/target/DockerTesting-0.0.1-SNAPSHOT.jar /etc/test/
CMD java -Xmx500M -jar /etc/test/DockerTesting-0.0.1-SNAPSHOT.jar

我在CMD上执行了这个命令: - sudo docker build Documents / DockerTest

在cmd上处理: -

Sending build context to Docker daemon 7.159 MB
Step 1/5 : FROM openjdk:8-jre-alpine
 ---> b1bd879ca9b3
Step 2/5 : RUN mkdir /etc/test/
 ---> Using cache
 ---> 4720a4e8fa67
Step 3/5 : RUN chmod 777 /etc/test/
 ---> Using cache
 ---> 91426c394ae4
Step 4/5 : COPY /home/administrator/Documents/LearningWorkspace/DockerTesting/target/DockerTesting-0.0.1-SNAPSHOT.jar /etc/test/
lstat home/administrator/Documents/LearningWorkspace/DockerTesting/target/DockerTesting-0.0.1-SNAPSHOT.jar: no such file or directory

这个Docker文件到底有什么问题。

问题2 -

现在,我的docker文件已成功执行,并且在运行docker Image时,将在控制台上打印java应用程序的println语句。

现在,我想在docker镜像上执行一个cron作业,即在固定时间后运行特定的docker。

我通过更多的搜索和尝试将我的码头改为:

CRONTAB文件: -

*/10 * * * * root java -jar /etc/test/DockerTesting-0.0.1-SNAPSHOT.jar 2>&1

更新的DOCKER文件: -

FROM openjdk:8-jre-alpine
RUN mkdir /etc/test/
RUN chmod 777 /etc/test/
ADD crontab /etc/cron
ADD jar/ /etc/test/
RUN chmod 0600 /etc/cron
CMD java -Xmx500M -jar /etc/test/DockerTesting-0.0.1-SNAPSHOT.jar

但它不起作用它只打印语句。

Docker文件中是否还有任何遗漏?

链接我提到qazxsw poi qazxsw poi

docker docker-build
1个回答
1
投票

发生这种情况,因为您无法从Link 1外部向Docker容器添加任何文件:

Extended description

docker build命令从Dockerfile和“context”构建Docker镜像。构建的上下文是位于指定PATH或URL中的文件集。构建过程可以引用上下文中的任何文件。例如,您的构建可以使用COPY指令来引用上下文中的文件。

在你的Link 2旁边创建一个名为build context的目录,放入你的jar文件,然后:

Dockerfile

或者只是你可以从那里复制所有的罐子:

jars

这样你应该最终得到一个内部有ADD jars/DockerTesting-0.0.1-SNAPSHOT.jar /etc/test/ 的容器。无论如何,你把可执行文件放在ADD jars/ /etc/test/ 目录中的任何原因?我的意思是这可行,但人们希望只有系统配置文件。更合适的位置是/etc/test/DockerTesting-0.0.1-SNAPSHOT.jar/etc,或者甚至/var;)

© www.soinside.com 2019 - 2024. All rights reserved.