在Docker上以非root用户身份运行JAR时出现权限错误

时间:2019-01-01 14:08:37

标签: linux docker alpine

我确实编写了以下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

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

1 个答案:

答案 0 :(得分:2)

用户appuser在当前工作目录(/中没有写权限,您可以使用docker run --rm openjdk:8-jdk-alpine pwd进行验证),看来您的应用程序需要创建一个{{ 1}}目录中。

可能的解决方案:

  • logs/设置到他可以在WORKDIR上书写的位置(例如/tmp,如果创建了/home/appuser
  • 您可以在发出Dockerfile命令时使用选项--workdir /path/to/a/folder/where/appuser/can/write
  • 您可以创建具有适当权限的docker run文件夹(为/logs编写)