Мой Dockerfile выглядит как
FROM ubuntu:xenial
Some RUN commands
WORKDIR /app
COPY . /app
ENV PYTHONPATH="/app/candis"
EXPOSE 5000 8888
CMD ["python3", "-m", "candis"]
Мой docker-compose выглядит как
x-defaults: &defaults
restart: unless-stopped
services:
db:
<<: *defaults
image: postgres
networks:
- db
expose:
- "5432"
app:
<<: *defaults
build:
context: .
dockerfile: ./compose/development/flask/Dockerfile
environment:
CANDIS_DATABASE_HOST: db
CANDIS_CACHE_HOST: cache
networks:
- db
- cache
- proxy
depends_on:
- db
volumes:
- .:/app
ports:
- "5000:5000"
- "8888:8888"
cache:
<<: *defaults
image: redis
networks:
- cache
proxy:
<<: *defaults
image: nginx
depends_on:
- app
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- "4000:80"
networks:
- proxy
networks:
db:
driver: bridge
cache:
driver: bridge
proxy:
driver: bridge
Когда я присоединяю монтирование каталога / app, упоминая его в томах как .:/app
, он монтируется внутри контейнера, но вместо того, чтобы его разрешения были root: root, по умолчанию он меняется на nnobody: nogroup. Зачем? Когда я захожу в контейнер и выполняю ls -al
, разрешения для каждого файла отображаются равными nobody:nogroup
. Хотя мой пользователь является пользователем root, он все еще не может вносить какие-либо изменения в каталог / app.