繁体   English   中英

Docker 撰写卷权限 linux

[英]Docker compose volume Permissions linux

我尝试在docker-compose.yaml容器中运行 wordpress,我docker-compose.yaml文件是:

version: "2"
services:
  my-wpdb:
    image: mariadb
    ports:
      - "8081:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant
  my-wp:
    image: wordpress
    volumes:
      - ./:/var/www/html
    ports:
      - "8080:80"
    links:
      - my-wpdb:mysql
    environment:
      WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant

当我构建 docker 结构时,卷已安装但属于 root。

我试图改变它:

my-wp:
  image: wordpress
  user: 1000:1000    # added
  volumes:
    - ./:/var/www/html
  ports:
    - "8080:80"
  links:
    - my-wpdb:mysql
  environment:
    WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant

现在我可以编辑文件了。 但随后容器不再为网站提供服务。

解决此权限问题的正确方法是什么?

根据docker-composedocker run参考, user选项设置了容器中运行的进程的用户 ID(和组 ID)。 如果您将此设置为1000:1000 ,您的网络服务器将无法再绑定到端口 80。 绑定到 1024 以下的端口需要 root 权限。 这意味着您应该再次删除添加的user: 1000:1000语句。

要解决共享卷的权限问题,您需要更改目录的所有权。 运行chown 1000:1000 /path/to/volume 这可以在容器内或直接在主机系统上执行。 更改是持久的并立即生效(无需重新启动容器)。

一般来说,我认为卷应该在一个子目录中,例如

  volumes:
    - ./public:/var/www/html

确保正确的用户拥有./public 如果您启动容器并且该目录不存在,则 docker 会为您创建它。 在这种情况下,该目录归root ,您需要按照上面的说明手动更改所有权。


或者,您可以作为非特权用户( user: 1000:1000 )运行网络服务器,让服务器侦听端口 8080 并将路由更改为

 ports:
    - "8080:8080"

同一问题中回答在您的 docker-compose 中使用 root 用户获得完全权限

前任:-

node-app:
    container_name: node-app
    image: node
    user: root
    volumes:
      - ./:/home/node/app
      - ./node_modules:/home/node/app/node_modules
      - ./.env.docker:/home/node/app/.env

注意:- 用户:root => 给你你的卷的完全权限

我正在使用 Google Cloud shell,发现以下命令为我启用了正确的权限,以便通过 WordPress docker 容器使用 FTP 文件访问:

sudo chmod 644 -R wordpress-docker-compose

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM