首页 > 解决方案 > Docker Compose - Spring Boot - 容器外的 logback

问题描述

我曾尝试在容器外写入日志文件,但失败了。我正在使用 docker-compose

码头工人-compose.yml

gateway-service:
        container_name: gateway-service
        build:
            context: .
            dockerfile: core-gateway/gateway/Dockerfile
        expose:
            - 8080
        ports:
            - 8080:8080
        volumes: 
            - /usr/app/home/inspectionimage:/home/inspectionimage
            - /usr/app/home/staging:/home/staging
            - /usr/app/home/production:/home/production
        networks:
            - qa-network

Dockerfile

FROM openjdk:8
RUN rm -rf gateway-0.0.1-SNAPSHOT.jar
COPY core-gateway/gateway/target/gateway-0.0.1-SNAPSHOT.jar gateway-0.0.1-SNAPSHOT.jar
VOLUME "/home/production"
VOLUME "/home/staging"
CMD ["java","-jar","-Dspring.profiles.active=staging","gateway-0.0.1-SNAPSHOT.jar"]

logback-spring.xml

<appender name="prod-file"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/home/production/log-gateway-prod.log</file>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/home/production/log-gateway.%d{yyyy-MM-dd}.%i.log.gz
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>

运行 docker compose 命令时出现错误

Caused by: java.lang.IllegalStateException: Logback configuration error detected: 
gateway-service       | ERROR in ch.qos.logback.core.rolling.RollingFileAppender[prod-file] - openFile(/home/production/log-gateway-prod.log,true) call failed. java.io.FileNotFoundException: /home/production/log-gateway-prod.log (Permission denied)

我在 CentOS 7 中提供了必要的文件夹权限。

标签: springspring-bootdockerdocker-composelogback

解决方案


我在 CentOS 7 中更新了 sestatus。它有效。

setenforce 0

将状态从强制更改为允许


推荐阅读