我正在准备一个java服务的坞映像。但是,在构建图像时,我会遇到以下错误。
chmod: cannot access '/HerculesServiceOnboarding-linux': No such file or directoryHerculesServiceOnboarding linux是一个二进制文件,被调用以在java服务中执行。文件位于路径src/main/java/resources/下。通常的maven项目结构。
下面是我的java服务的项目结构。

下面的是停靠文件代码.
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"]我不知道访问文件的正确路径是什么?我必须提供的任何路径都不应该是特定于环境的,因为这将部署到多个env。
请求您的帮助,为我提供访问该文件的正确路径!
发布于 2022-05-30 09:04:29
RUN子句中的每个命令都将在构建的映像中执行,因此是在openjre上执行的,同时可能添加了所有文件/dir。
在您的示例中,当build命令到达chmod时,到目前为止您有:
/javaAction/target/hercules-onboarding-job.jar
/everthing/else/provided/with/openjre因此,您不能期望它找到不存在的文件.目前还没有。
您所要做的就是复制/添加所需的文件(如果需要更多的话),就像您对jar所做的那样.或者是jar本身,您想要" chmod ",然后用正确的路径修复chmod。
如果您不希望它停留在您的形象,您可以只是删除它在您的构建结束,运行rm -rf .命令
https://stackoverflow.com/questions/72430171
复制相似问题