从Django Docker到nginx提供静态文件

从Django Docker到nginx提供静态文件,django,docker,nginx,Django,Docker,Nginx,我正在对接Django应用程序,但没有提供静态文件 设置.py STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(os.path.dirname(BASE_DIR), 'static_my_project') ] STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn', 'static_root') docker compose.yml s

我正在对接Django应用程序,但没有提供静态文件

设置.py

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(os.path.dirname(BASE_DIR), 'static_my_project')
]

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn', 'static_root')
docker compose.yml

services:
  nginx:
    image: nginx:alpine
    container_name: "originor-nginx"
    ports:
      - "10080:80"
      - "10443:43"
    volumes:
      - .:/app
      - ./config/nginx:/etc/nginx/conf.d
      - originor_static_volume:/app/static_cdn/static_root
      - originor_media_volume:/app/static_cdn/media_root
    depends_on:
      - web
  web:
    build: .
    container_name: "originor-web"
    command: ["./wait-for-it.sh", "db:5432", "--", "./start.sh"]
    volumes:
      - .:/app
      - originor_static_volume:/app/static_cdn/static_root
      - originor_media_volume:/app/static_cdn/media_root
    ports:
      - "9010:9010"
    depends_on:
      - db
  db:
    image: postgres:11
    container_name: "originor-postgres-schema"
    volumes:
      - originor_database:/var/lib/postgresql/data
    ports:
      - "5432:5432"
  pgadmin:
    image: dpage/pgadmin4
    container_name: "originor_pgadmin"
    volumes:
      - originor_pgadmin:/var/lib/pgadmin

volumes:
  originor_database:
  originor_static_volume:
  originor_media_volume:
  originor_pgadmin:
nginx.conf

error_log   /var/log/nginx/error.log;

include /etc/nginx/conf.d/proxy.conf;
proxy_headers_hash_bucket_size 128;

upstream dweb {
    ip_hash;
    server web:9010 fail_timeout=0;
}

server {
    listen 10080;
    server_name localhost;
    access_log /var/log/nginx/localhost.access.log combined;

    location /static/ {
        autoindex on;
        alias /app/static_cdn/static_root/;
    }

    location /media/ {
        alias /app/static_cdn/media_root/;
    }

    location / {
        proxy_pass http://dweb/;
    }
}
但在浏览器中访问
/admin/
时,它会显示控制台

f032d416bce1_originor-web | Not Found: /static/admin/css/login.css
f032d416bce1_originor-web | Not Found: /static/admin/css/responsive.css
f032d416bce1_originor-web | Not Found: /static/admin/css/base.css
f032d416bce1_originor-web | Not Found: /static/admin/css/base.css
我可以通过执行以下命令来验证
/app/static\u cdn/static\u root
目录中的文件

docker exec -it <container_id> ls -la /app/static_cdn/static_root
编辑3:nginx日志

运行
docker compose up
时,会显示以下日志


但是运行docker logs Originar nginx时,在“web”初始化中的某个地方,它不会给出任何东西,您必须调用
manage.py collectstatic
将应用程序的静态文件放入卷中。更多信息

UPD: uwsgi代理的nginx配置:

location / {
    uwsgi_pass uwsgi://web:9010;
    include uwsgi_params;
 }

在“web”初始化的某个地方,您必须调用
manage.py collectstatic
将应用程序的静态文件放入卷中。更多信息

UPD: uwsgi代理的nginx配置:

location / {
    uwsgi_pass uwsgi://web:9010;
    include uwsgi_params;
 }

这是在start.sh中运行的,该脚本是在web.Wait中通过命令运行的,nginx conf中的
alias originor\u static\u volume
?可能是
别名/app/static\u cdn/static\u root/
?不,实际上nginx服务器似乎没有监听。因为浏览器中的nginx端口10080没有加载网站,而as 9010端口是可访问的,web正在工作。web容器的
/var/log
目录中没有文件。我已更新了答案,请尝试conf uwsgi pass。要查看nginx日志:
docker日志
正在start.sh中运行,该脚本在web.Wait中通过命令运行,nginx conf中的
alias originor\u static\u volume
?可能是
别名/app/static\u cdn/static\u root/
?不,实际上nginx服务器似乎没有监听。因为浏览器中的nginx端口10080没有加载网站,而as 9010端口是可访问的,web正在工作。web容器的
/var/log
目录中没有文件。我已更新了答案,请尝试conf uwsgi pass。要查看nginx日志:
docker日志