spring boot - docker - Logback - 非 root 用户 - 权限被拒绝错误

时间:2021-07-04 11:15:51

标签: spring-boot docker

我有 dockerfile

FROM openjdk:8-jdk-alpine as build
WORKDIR /workspace/app

COPY . /workspace/app

RUN --mount=type=cache,target=/root/.gradle ./gradlew clean build -x test
RUN mkdir -p build/dependency && (cd build/dependency; jar -xf ../libs/*.jar)

WORKDIR /workspace/app/build/dependency


FROM openjdk:8-jdk-alpine
RUN addgroup -S demo && adduser -S demo -G demo
VOLUME /tmp
USER demo
ARG DEPENDENCY=/workspace/app/build/dependency

COPY --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=build ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=build ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-noverify","-XX:TieredStopAtLevel=1","-cp","app:app/lib/*","-Dspring.main.lazy-initialization=true","hello.Application"]

我的应用道具有

logging.file.name=pafy.log
logging.file.path=logs

错误:

$ docker run -p 8080:8080 -t my/pmy-docker 04-07-2021 10:50:30.068
[main] ERROR o.s.boot.SpringApplication.reportFailure - Application
run failed java.lang.IllegalStateException: Logback configuration
error detected: ERROR in
ch.qos.logback.core.rolling.RollingFileAppender[FILE] -
openFile(pafy.log,true) call failed. java.io.FileNotFoundException:
pafy.log (Permission denied)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:169)

请问如何解决这个问题?

注意:我使用演示用户而不是 root。会不会是这个问题

1 个答案:

答案 0 :(得分:0)

我做了这个改变

RUN addgroup -S demo && adduser -S demo -G demo
RUN mkdir -p /logs
RUN chown demo /logs

VOLUME /logs
USER demo