新的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
问题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
发生这种情况,因为您无法从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
;)