【问题标题】:How to mount a volume with docker-compose with owner www-data user of the container?如何使用容器的所有者 www-data 用户使用 docker-compose 挂载卷?
【发布时间】:2022-08-06 07:01:25
【问题描述】:

我有我的 docker-compose 如下

  \"kj_wordpress\":
    image: kristijorgji/wordpress-php-7.1:0.0.0
    volumes:
      - ${KJ_WORDPRESS_PATH}:/var/www/html/app
    restart: on-failure
    container_name: \"kj_wordpress\"

这工作正常,我可以访问一个 wordpress 网站。 问题是 nginx (www-data) 的用户无法访问wp-contents/uploads 的写权限,并且无法在那里上传图像。

我可以通过输入正在运行的容器中手动修复它

docker-compose exec kj_wordpress /bin/bash

然后运行

chown -R www-data wp-content/uploads/

这很好用。

现在我想自动化这个过程,而不必在每次创建和运行容器时都运行它。

我怎样才能让www-data 用户 - ${KJ WORDPRESS PATH}:/var/www/html/app

所以容器路径/var/www/html/app

  • Docker 不管理主机目录或命名卷内容的所有权。如果$KJ_WORDPRESS_PATH 是一个主机目录,您可以将sudo chown 那个主机目录添加到右侧(数字)uid;在这种情况下,我还希望您的 docker-compose exec ... chown 命令能够“坚持”。
  • @DavidMaze 这就是我现在正在做的事情,正如帖子中提到的那样。我只是想以其他方式自动化它。目前我在我的入口点脚本中添加了作为第一件事手动 chown 的部分

标签: docker docker-compose


【解决方案1】:

两年前我有类似的问题。选项很少,我测试了标记的答案,直到某个时候。

Docker-compose and named volume permission denied

这就是我后来用 docker compose 做到的。

    files-init:
        image: alpine
        restart: "no"
        entrypoint: |
            /bin/sh -c "chown myuser:myuser /path/to/folder"
        volumes:
            - logs:/path/to/folder
    service-logs:
        image: alpine
        depends_on:
            - files-init
    volumes:
        logs:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2017-12-30
    相关资源
    最近更新 更多