Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在容器创建时设置docker卷权限_Docker_Logging - Fatal编程技术网

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

在容器创建时设置docker卷权限,docker,logging,Docker,Logging,我在docker中有一个PHP应用程序,它有一个空日志文件夹,我将其作为卷添加到docker容器中: app: volumes: - ./app/logs:/var/log/app 但当应用程序尝试写入时,它会引发错误,因为它没有权限 我需要一种在每次创建容器时为其设置权限的方法,因此不需要手动过程,我还需要日志即使在容器被销毁时也能保持 我怎么做?对于这种情况,什么是好的做法?您的web服务器或日志的写入者没有写入/var/log/app的权限。在这里,您将从主机绑定

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

app:
    volumes:
        - ./app/logs:/var/log/app
但当应用程序尝试写入时,它会引发错误,因为它没有权限

我需要一种在每次创建容器时为其设置权限的方法,因此不需要手动过程,我还需要日志即使在容器被销毁时也能保持


我怎么做?对于这种情况,什么是好的做法?

您的web服务器或日志的写入者没有写入/var/log/app的权限。在这里,您将从主机绑定挂载一个目录到一个容器中,在这种情况下,文件和目录将保持它们在主机上的权限。在主机上设置权限可以解决此问题

请参阅以下内容以执行相同操作-

或者,我建议为日志创建一个docker卷,这也可以解决让日志持久化的需求

要创建卷,请使用-
docker创建卷应用程序日志

services:

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

volumes:
app-logs:
  external: true
然后,您可以使用docker指令
CMD
ENTRYPOINT
对装入的卷设置正确的权限。就好像——
CMD chown-R apache:apache/var/log/app

我已经将入口点放在dockerfile中,但每次它完成时,容器都会重新启动。我不想这样,它需要继续运行,我该如何继续?好吧,这与最初的问题不同。你能把你的入口贴出来吗?您还可以查看docker日志以查看发生了什么,并尝试找出导致重新启动的原因。我以前搜索过这个,如果我使用ENTRYPOINT、CMD或COMMAND,容器的行为就像它的全部用途一样,因此当它完成时,它将重新启动(因为我使用的是restart:always)。这就是我所说的:
entrypointchown-apache:apache/var/log/app