Linux 在Docker上以非根用户身份运行JAR时出现权限错误
我确实写了以下Dockerfiler:Linux 在Docker上以非根用户身份运行JAR时出现权限错误,linux,docker,alpine,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"] 运行图像时,会出现以下错误:
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
您能告诉我我做错了什么吗?用户
appuser
在当前工作目录中没有写入权限(/
,您可以使用docker run--rm openjdk:8-jdk-alpine pwd
)进行验证,您的应用程序似乎需要在该工作目录中创建一个logs/
目录
可能的解决办法:
- 将
设置为他可以在WORKDIR
中写入的位置(例如Dockerfile
,或者/tmp
(如果已创建)/home/appuser
- 在发出
命令时,您可以使用选项docker run
--workdir/path/to/a/folder/where/appuser/can/write
- 您可以使用正确的权限创建
文件夹(为/logs
编写)appuser
appuser
在当前工作目录中没有写入权限(/
,您可以使用docker run--rm openjdk:8-jdk-alpine pwd
)进行验证,并且您的应用程序似乎需要在该工作目录中创建一个logs/
目录
可能的解决办法:
- 将
设置为他可以在WORKDIR
中写入的位置(例如Dockerfile
,或者/tmp
(如果已创建)/home/appuser
- 在发出
命令时,您可以使用选项docker run
--workdir/path/to/a/folder/where/appuser/can/write
- 您可以使用正确的权限创建
文件夹(为/logs
编写)appuser