Docker镜像/容器在Ubuntu上运行良好,但我希望能够访问静态文件夹。因此,我添加了";主机卷";到docker-compose.yml(卷以前是空的(:
version: '3.3'
services:
api:
build:
context: .
restart: always
ports:
- "8000:8000"
volumes:
- ./app_static:/app/static
$ docker-compose up
在构建图像并运行CCD_ 2命令之后,我得到以下错误:
权限错误:[Erno 13]权限被拒绝:"静态/媒体">
docker图像中的文件夹结构如下:
appuser@1e2bc02404a2:/app$ ls -la
total 24
drwxr-xr-x 1 appuser appuser 4096 Mar 29 21:50 .
drwxr-xr-x 1 root root 4096 Mar 29 21:51 ..
drwxr-xr-x 1 appuser appuser 4096 Mar 29 21:00 api
-rw-r--r-- 1 appuser appuser 765 Mar 29 21:00 manage.py
drwxr-xr-x 1 appuser appuser 4096 Mar 29 21:00 mausefallentest
drwxr-xr-x 2 root root 4096 Mar 29 21:51 static
问题是,在将主机卷添加到docker compose文件后,静态文件夹的用户更改为root。但是Docker图像在";appuser";使用者因此我得到了拒绝权限的错误。
但是我该如何解决这个问题呢?我的Ubuntu服务器上只有这个问题。在Windows上运行良好。
Django Dockerfile的最后一部分:
...
RUN pip install --no-cache-dir -r /scripts/requirements.txt
# Creating Work Directory
WORKDIR /app
RUN useradd appuser
RUN chown -R appuser:appuser /app
RUN chmod -R 777 /app/static
USER appuser
CMD ["sh", "-c", "python manage.py collectstatic --no-input; python manage.py migrate; gunicorn api.wsgi:application --bind 0.0.0.0:8000"]
我不得不给出"appuser";对";主机卷";docker容器外的文件夹。