Ошибка разрешения при запуске JAR от имени пользователя без полномочий root в Docker - PullRequest
0 голосов
/ 01 января 2019

Я написал следующий 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 голосов
/ 01 января 2019

Пользователь 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)
...