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