gpt4 book ai didi

java - 当用户尝试执行 javac 时构建 Docker 镜像失败

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

我正在尝试创建一个 Dockerfile,但如果我添加一个用户,它在构建过程中会不断失败。如果我删除用户,图像的构建过程会成功,但我需要用户,因为它是我正在开发的代码气候引擎的要求。

Dockerfile:

FROM java

MAINTAINER DavidRenz

RUN groupadd app -g 9000 && useradd -g 9000 -u 9000 -r -s /bin/false app

VOLUME /code
WORKDIR /code

COPY . /usr/src/app

USER app

RUN javac /usr/src/app/bin/Pmd.java
CMD ["java", "/usr/src/app/bin/Pmd"]

日志:

Step 7 : USER app
---> Running in 896795a6bb63
---> 09c5179159a8
Removing intermediate container 896795a6bb63
Step 8 : RUN javac /usr/src/app/bin/Pmd.java
---> Running in 3e1a335f8edf
javac: file not found: /usr/src/app/bin/Pmd.java
Usage: javac <options> <source files>
use -help for a list of possible options
The command '/bin/sh -c javac /usr/src/app/bin/Pmd.java' returned a non-zero code: 2

最佳答案

这看起来像一个权限错误:在您的 USER app 命令之前,您的容器以 root 身份运行,因此 /usr/src/app code> 由 root 所有,app 用户无法读取。

我相信,如果您使用以下步骤替换USER app, RUN javac... 序列,它将起作用:

RUN javac /usr/src/app/bin/Pmd.java
RUN chmod -R app:app /usr/src/app

USER app

关于java - 当用户尝试执行 javac 时构建 Docker 镜像失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767540/

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