docker 当Sping Boot 应用程序使用Logback尝试将日志写入/var/log/时,Alpine Linux上的权限问题

2ledvvac  于 2023-05-16  发布在  Docker
关注(0)|答案(1)|浏览(104)

我有一个Sping Boot Java应用程序,我正在使用logback日志记录框架。我已经使用spring profiles设置了它,这样当我使用特定的配置文件(通过指定SPRING_PROFILES_ACTIVE环境变量)运行应用程序的容器化示例时,logback将包含一个将日志写入/var/log/log.txt的滚动文件附加器。
我使用的基本docker镜像是amazoncorretto:17-alpine-jdk(它是Alpine),我以非root用户的身份运行容器。
当我运行这个命令时,我在尝试登录到/var/log/log.txt时得到一个权限被拒绝的错误。
我在Dockerfile中设置了非root用户,如下所示:

RUN apk add doas
RUN adduser -D myuser && addgroup mygroup && addgroup myuser mygroup
RUN echo 'myuser:123' | chpasswd
RUN echo 'permit persist :wheel' > /etc/doas.d/doas.conf

USER myuser

如果我exec到正在运行的容器,并cd到/var/log,如果我执行touch test.txt,我也会得到一个权限拒绝错误。
我试过各种各样的东西,例如。echo 'permit :wheel as root' > /etc/doas.d/doas.conf,但似乎无法使其工作(除了仅以root用户身份运行容器之外,但我想使用非root用户)。

qybjjes1

qybjjes11#

默认情况下,/var/log/具有以下定义的权限

drwxrwxr-x 15 root syslog

阅读更多here

将应用程序日志追加到系统使用的Linux logs文件夹中并不是一个好主意

但是如果你想尝试上面的方法,你可以登录容器并执行sudo su - syslog,然后你可以在var/log/中执行touch test.txt

相关问题