【问题标题】:Allow Docker Apache write permissions to local synced volume允许 Docker Apache 对本地同步卷的写入权限
【发布时间】:2016-11-02 19:17:50
【问题描述】:

在运行 Docker 容器时,允许 Apache 对同步卷进行写访问的正确方法是什么?

  • 重要的是,我希望文件夹同步,以便本地更改立即反映在容器内,就像现在使用当前运行命令发生的那样

运行容器时: docker run -v /Local/folder/toSync:/var/www/html -p 8080:80 --sig-proxy=false the-image

Docker Apache 进程没有对该文件夹的写入权限,因为该文件夹的所有者和组设置为 1000 staff 我相信 1000 正在替换我的本地用户名(容器中不存在)。 Apache 以 www-data 运行,因此无法写入文件。

尝试将本地文件夹用户/组设置为www-data 会导致chown: www-data: illegal user name

设置权限和/或挂载卷以允许 Apache 写访问的正确方法是什么?

【问题讨论】:

  • 我大胆猜测,以用户 1000 运行 Apache 可能会成功,但这似乎不正确
  • 您正在运行什么命令将本地文件夹 user:group 设置为 www-data?
  • 同样的结果,我在本地没有www-data 用户。如果需要,我可以创建一个,但这是正确的方法吗?这里似乎是一个相当常见的用例
  • 我不认为创建用户是必要的,你在使用 dockerfile 吗?我会尝试将此添加到 dockerfile:RUN usermod -u 1000 www-dataRUN usermod -G staff www-data
  • 这就是我之前修复我的方法(使用 Dockerfile)——无论如何,github.com/docker/docker/issues/7198 对此进行了大量讨论,所以最好的办法是去那里寻找解决方案

标签: apache docker


【解决方案1】:

您需要将 :z 放在卷的末尾。

-v /Local/folder/toSync:/var/www/html:z

此外,您的 chown 语句的语法看起来也不正确。更改卷的所有者应该可以正常工作,您仍然需要这样做。

FROM php:7.4-apache
WORKDIR /var/www/html
EXPOSE 80
WORKDIR /var/www
RUN chown -R www-data html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2019-03-25
    • 2021-03-28
    • 2017-08-14
    相关资源
    最近更新 更多