После исследования usermod , this , github кажется, что не существует приемлемого способа включить доступ для записи с пружинной загрузкой в /opt/service/log
каталог / том, который заканчиваетсяв java.io.FileNotFoundException: log/app.log (Permission denied)
.
Dockerfile:
FROM openjdk:8-alpine
RUN apk update && apk add --no-cache bash curl busybox
EXPOSE 8080
#1 RUN mkdir -p /opt/service/log ; chown -R user /opt/service/log
VOLUME ["/opt/service/log"]
# a few COPY commands
RUN adduser -D -S -u 1000 user && chown -R 1000 /opt/service/
#2 RUN chmod -R 777 /opt/service
RUN chmod 755 /opt/service/entrypoint.sh
USER 1000
RUN ls -la .
RUN touch /opt/service/log/test.log
ENTRYPOINT ["/opt/service/entrypoint.sh"]
#1
это закомментированное исправление работает, но неприемлемо, поскольку каталог может быть изменен позже.
Вывод выполнения Dockerfile:
[INFO] DOCKER> Step 13/15 : RUN ls -la .
[INFO] DOCKER>
[INFO] DOCKER> ---> Running in a99022c07da2
[INFO] DOCKER> total 28088
drwxr-xr-x 1 user root 4096 Oct 15 11:05 .
drwxr-xr-x 1 root root 4096 Oct 15 11:02 ..
-rw-r--r-- 1 user root 4367 Sep 17 10:18 entrypoint.sh
drwxr-xr-x 2 root root 4096 Oct 15 11:05 log
-rw-r--r-- 1 user root 28741050 Oct 15 11:05 service.jar
[INFO] DOCKER> Removing intermediate container a99022c07da2
[INFO] DOCKER> ---> d0831197c79c
[INFO] DOCKER> Step 14/15 : RUN touch /opt/service/log/test.log
[INFO] DOCKER>
[INFO] DOCKER> ---> Running in 54f5d57499fc
[INFO] DOCKER> [91mtouch: /opt/service/log/test.log: Permission denied
Как сделать том для записи пользователем user
/ spring boot?