Docker Compose Shared Named Volume Permissions Denied

Следующий 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:

Веб-контейнер собирается с помощью следующего 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
...

При печати разрешений в процессе создания веб-контейнера возвращается следующее:

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) и я просматриваю разрешения веб-контейнера, я нахожу следующее:

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? Как я могу убедиться, что том media имеет те же разрешения, что и папка static внутри веб-контейнера?

Заранее спасибо

Привет, надеюсь, у тебя все хорошо

Сегодня вечером у меня возникла такая же проблема, и я нашел решение, добавив

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

Я думаю, что мне удалось установить docker, используя sudo и забыв дать права моему настоящему пользователю

Надеюсь, это поможет :D

Вернуться на верх