我在docker中有一个PHP应用程序,其中有一个空的logs文件夹,我将其作为卷添加到docker容器中:
app:
volumes:
- ./app/logs:/var/log/app
但是当应用尝试编写时,由于没有权限,因此会引发错误。
我需要一种在每次创建容器时为其设置权限的方法,因此不需要手动处理,即使容器被破坏,我也需要日志保持不变。
我该怎么办?在这种情况下,什么是好的做法?
答案 0 :(得分:1)
您的Web服务器或日志写入者无权写入/ var / log / app。在这里,您要从主机将目录绑定安装到容器中,在这种情况下,文件和目录将保持它们在主机上的权限。在主机上设置权限可以解决该问题。
请参阅以下内容进行相同的操作-write in shared volumes docker
或者,我建议为日志创建一个docker卷,这也可以满足您使其成为永久的要求。
要创建卷,请使用-docker create volume app-logs
services:
app:
volumes:
- app-logs:/var/log/app
volumes:
app-logs:
external: true
然后,您可以使用CMD
或ENTRYPOINT
的docker指令在已安装的卷上设置正确的权限。就像-
CMD chown -R apache:apache /var/log/app