【问题标题】:Permission error running a JAR as non-root user on Docker在 Docker 上以非 root 用户身份运行 JAR 的权限错误
【发布时间】:2019-01-01 14:08:36
【问题描述】:

我确实编写了以下 Dockerfiler:

FROM openjdk:8-jdk-alpine

RUN addgroup -g 999 -S appgroup && \
     adduser -u 999 -S appuser -G appgroup
USER appuser

COPY myapp.jar /usr/app/myapp.jar 

ENTRYPOINT ["java","-jar","/usr/app/myapp.jar"]  

当我运行图像时,我得到以下错误:

main ERROR Unable to create file logs/file.log java.io.IOException: Could not create directory /logs

你能告诉我我做错了什么吗?

【问题讨论】:

    标签: linux docker alpine


    【解决方案1】:

    用户appuser在当前工作目录(/,可以用docker run --rm openjdk:8-jdk-alpine pwd验证)没有写权限,看来你的应用需要在那个工作目录下创建logs/目录.

    可能的解决方案:

    • Dockerfile 中将WORKDIR 设置为他可以写入的位置(例如/tmp,或者/home/appuser,如果它已创建)
    • 您可以在发出docker run 命令时使用选项--workdir /path/to/a/folder/where/appuser/can/write
    • 您可以创建具有正确权限的/logs 文件夹(为appuser 编写)

    【讨论】:

      猜你喜欢
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多