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

问题描述 投票:0回答:1

我写了以下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个回答
2
投票

用户appuser在当前工作目录中没有写权限(/,您可以使用docker run --rm openjdk:8-jdk-alpine pwd进行验证),并且您的应用程序似乎需要在该工作目录中创建logs/目录。

可能的解决方案 :

  • WORKDIR设置为他可以写的地方(例如/tmp,如果它被创建则为/home/appuser)在Dockerfile
  • 发出--workdir /path/to/a/folder/where/appuser/can/write命令时可以使用选项docker run
  • 你可以创建具有正确权限的/logs文件夹(写为appuser
© www.soinside.com 2019 - 2024. All rights reserved.