在创建容器时设置Docker卷权限

时间:2019-10-09 22:22:08

标签: docker logging

我在docker中有一个PHP应用程序,其中有一个空的logs文件夹,我将其作为卷添加到docker容器中:

app:
    volumes:
        - ./app/logs:/var/log/app

但是当应用尝试编写时,由于没有权限,因此会引发错误。

我需要一种在每次创建容器时为其设置权限的方法,因此不需要手动处理,即使容器被破坏,我也需要日志保持不变。

我该怎么办?在这种情况下,什么是好的做法?

1 个答案:

答案 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

然后,您可以使用CMDENTRYPOINT的docker指令在已安装的卷上设置正确的权限。就像- CMD chown -R apache:apache /var/log/app