我有一个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用户)。
1条答案
按热度按时间qybjjes11#
默认情况下,/var/log/具有以下定义的权限
阅读更多here。
将应用程序日志追加到系统使用的Linux logs文件夹中并不是一个好主意。
但是如果你想尝试上面的方法,你可以登录容器并执行
sudo su - syslog
,然后你可以在var/log/
中执行touch test.txt
。