【发布时间】: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