由于 docker 文件中的路径不正确,无法提供对文件的访问权限

Unable to provide access permission to file because of incorrect path in docker file

我正在尝试准备 java 服务的 docker 图片。但是在构建图像时我遇到了以下错误。

chmod: cannot access '/HerculesServiceOnboarding-linux': No such file or directory

HerculesServiceOnboarding-linux 是一个二进制文件,被调用以在 java 服务中执行。文件位于路径 src/main/java/resources/ 下。通常的maven项目结构。

下面是我的 java 服务的项目结构。

下面是docker文件代码。

FROM adoptopenjdk:8-jre-openj9

ARG app=hercules-onboarding-job

ENV app $app

RUN rm -rf /var/lib/apt/lists/* \
&& apt-get clean \
&& apt-get update \
&& apt-get -y --no-install-recommends upgrade \
&& apt-get -y --no-install-recommends install locales \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& locale-gen en_US.UTF-8

ENV LANG="en_US.UTF-8" \
LANGUAGE="en_US:en" \
LC_ALL="en_US.UTF-8" \
VERSION=8 \
UPDATE=222 \
BUILD=10

COPY  /target/$app.jar /javaAction/target/
COPY log4Olympus2.xml /

RUN chmod +x /HerculesServiceOnboarding-linux -- **Failed on this line with above mentioned error**
# RUN chmod +x /target/classes/HerculesServiceOnboarding-linux -- getting the same error
#RUN chmod +x /target/$app.jar/HerculesServiceOnboarding-linux -- getting the same error

CMD ["java", "-jar", "/javaAction/target/hercules-onboarding-job.jar"]

我不知道访问文件的正确路径是什么?我必须提供的任何路径都不应该是特定于环境的,因为这将部署到多个环境。

请求您的帮助,为我提供访问文件的正确路径!

运行 子句中的每个命令都将在您构建的图像中执行,因此在您的 openjre 上执行,同时您可能已添加所有 files/dirs。

在你的例子中,当构建命令到达你的 chmod 时,到目前为止你有:

/javaAction/target/hercules-onboarding-job.jar
/everthing/else/provided/with/openjre

因此,您不能指望它找到不存在的文件...。
您所要做的就是 COPY/ADD 所需的文件(或目录,如果需要更多),就像您对 jar 所做的一样......或者它是 jar 本身谁的权利你想“chmod”,然后用正确的路径修复你的 chmod。

如果您不希望它保留在您的图像中,您可以在构建结束时使用 运行 rm -rf ...命令