【问题标题】:Docker Compose Shared Named Volume Permissions DeniedDocker Compose 共享命名卷权限被拒绝
【发布时间】:2022-06-23 06:04:37
【问题描述】:

以下 docker-compose 为 Django 应用程序启动容器:

version: '3.7'

services:
  web:
    build: 
      context: .
      dockerfile: Dockerfile.prod
    container_name: web
    volumes:
      - static_volume:/static
      - media_volume:/media
...

  nginx:
    container_name: nginx
    build: ./nginx_proxy
    restart: always
    volumes:
      - static_volume:/static
      - media_volume:/media
...

volumes:
  media_volume:
  static_volume:

Web 容器是使用以下 Dockerfile 构建的:

# pull official base image
FROM python:3.8

...

# organise permissions
RUN chown -R manager:manager /static
RUN chmod -R 755 /static

RUN chown -R manager:manager /media
RUN chmod -R 755 /media

RUN ls -la
...

当正在构建 web 容器时打印权限时,它会返回以下内容:

Step 21/23 : RUN ls -la
 ---> Running in e61984edfbcb
total 1760
drwxr-xr-x   1 manager:manager    4096 Jan 25 00:00 media
drwxr-xr-x   1 manager:manager    4096 Jan 25 00:00 static

Removing intermediate container e61984edfbcb

符合预期并在 Dockerfile 中设置。

但是当容器启动时(docker-compose up)并且我查看了 web 容器的权限,我发现以下内容:

docker exec -it web bash
manager@c8762586f678:/$ ls -la
total 1760
drwxrwxr-x   3 root:root       4096 Sep 22 11:12 media
drwxr-xr-x   3 manager:manager       4096 Sep 22 11:12 static

为什么两个命名卷具有不同的权限——具体来说,为什么媒体卷恢复为 root:root?如何确保媒体卷与 Web 容器内的静态文件夹具有相同的权限?

提前致谢

【问题讨论】:

    标签: django docker docker-compose permissions


    【解决方案1】:

    你好,希望你做得很好

    我今晚解决了同样的问题,我通过添加找到了解决方案

    sudo chown -R user-you-want:user-you-want data/**
    

    我想我设法使用 sudo 安装了 docker,却忘记将权限授予我的实际用户

    希望对你有帮助:D

    【讨论】:

      猜你喜欢
      • 2021-01-09
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 2019-11-12
      相关资源
      最近更新 更多