我已经在StackOverflow上阅读了有关此问题的一些帖子,但无法解决我们的问题,因为标题说我试图在docker上使用django,nginx来提供静态服务。 / p>
起初我收到错误 PermissionError:[Errno 13]权限被拒绝:' / static / admin' 。我已经发现我必须将STATIC_ROOT
从STATIC_ROOT = '/static'
更改为STATIC_ROOT = os.path.join(BASE_DIR, 'static')
。现在collectstatic
适用于Docker的终端,但我的webapp静态仍无法正常工作,我想了解原因并修复它。
如果您需要更多信息,我已将该项目置于Github。
project.conf
upstream web {
ip_hash;
server web:8000;
}
server {
location /static/ {
autoindex on;
alias /static/;
}
location / {
proxy_pass http://web/;
}
listen 8000;
server_name localhost;
}
搬运工-compose.yml
version: '2'
services:
nginx:
image: nginx:latest
container_name: nz01
ports:
- "8000:8000"
volumes:
- ./src:/src
- ./config/nginx:/etc/nginx/conf.d
- /static:/static
depends_on:
- web
web:
build: .
container_name: dz01
command: bash -c 'python manage.py collectstatic --noinput && python manage.py makemigrations && python manage.py migrate && gunicorn oqtor.wsgi -b 0.0.0.0:8000'
depends_on:
- db
volumes:
- ./src:/src
- /static:/static
expose:
- "8000"
links:
- redis
...
...
Dockerfile:
FROM python:latest
ENV PYTHONUNBUFFERED 1
#ENV C_FORCE_ROOT true
ENV APP_USER myapp
ENV APP_ROOT /src
RUN mkdir /src;
RUN groupadd -r ${APP_USER} \
&& useradd -r -m \
--home-dir ${APP_ROOT} \
-s /usr/sbin/nologin \
-g ${APP_USER} ${APP_USER}
WORKDIR ${APP_ROOT}
RUN mkdir /config
ADD config/requirements.pip /config/
RUN pip install -r /config/requirements.pip
USER ${APP_USER}
ADD . ${APP_ROOT}
答案 0 :(得分:0)
所以你在评论中提到你得到一个带有文字的白页,但没有样式或javascript。在您的浏览器中,应该有一种显示资源的方法,通常可以通过右键单击页面上的任何位置来获得。这应该会显示文件尝试从哪里加载,这应该只是让你指向正确的位置。