gpt4 book ai didi

java - 如何在 Play-With-Docker-Lab 中指定 java 的文件夹路径?

转载 作者:行者123 更新时间:2023-12-01 16:57:48 25 4
gpt4 key购买 nike

大家好,我有一个作业,需要运行 jar在 jetty worker 。我需要在沙箱环境 labs-play-with-docker ( https://labs.play-with-docker.com/ ) 中完成作业。该分配是通过创建一个 Dockerfile、一个镜像,然后运行一个容器来完成的。该 jar 有 3 个变量,我想给它们一个标准值。所以我想要的是,当我运行容器时,它会使用变量的预定值启动 jar 文件。该 jar 在 FOLDERPATH 中创建一个名为 FOLDERNAME 的文件夹,并每 10 秒创建一个文本文档,其中写入 PRINTMESSAGE。

这是我的 Dockerfile:

FROM openjdk:11-jre-slim

ADD jarName.jar jarName.jar


CMD FOLDERPATH=root FOLDERNAME="arg" PRINTMESSAGE="arg" java -jar jarName.jar

我们的形象应该基于openjdk:11-jre-slim 。我最终(!)成功地构建了图像。
现在,每当我使用命令 "docker run <containerName>" 运行容器时
我得到了异常(exception):

"Exception in thread "main" java.nio.file.InvalidPathException: Invalid folder path passed.: <folder path> at s04a02.Main.main(Main.java:37)". 

我只想将文件夹路径设置在 labs-play-with-docker 的根文件夹中。

所以我的问题是我该如何做到这一点?文件夹路径“~”或“root”或“/root”对我不起作用。当我在操作系统上指定文件夹路径时,它可以工作,但我不知道虚拟机的文件夹路径。

如果您能告诉我并向我解释一下您使用的文件夹路径以及为什么使用它,那就太好了。

最佳答案

如果我理解正确的话,基本上你需要的是在容器中设置工作目录。

在你的 Dockerfile 中:

FROM openjdk:11-jre-slim

# destination path is automatically created if it doesn't exist
ADD jarName.jar /usr/src/labs-play-with-docker/jarName.jar

# Set current working directory to desired my_app_directory
WORKDIR /usr/src/labs-play-with-docker.

CMD ["java", "-jar", "jarName.jar"]

WORKDIR 命令用于在任何给定时间定义 Docker 容器的工作目录,然后定义任何 RUN、CMD、ADD、COPY 或 ENTRYPOINT 命令会在指定的工作目录下执行

关于java - 如何在 Play-With-Docker-Lab 中指定 java 的文件夹路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61559420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com