簡體   English   中英

從Django Docker向Nginx提供靜態文件

[英]serve static files from Django Docker to nginx

我正在對Django應用程序進行docker化,但未提供靜態文件。

settings.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_cdn/static_root目錄中的文件

docker exec -it <container_id> ls -la /app/static_cdn/static_root

編輯2: docker logs <container>

wait-for-it.sh: waiting 15 seconds for db:5432
wait-for-it.sh: db:5432 is available after 0 seconds
--: Starting application build


--: Creating migration
No changes detected
------: makemigrations complete


--: Running migration
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  No migrations to apply.
------: migrate complete


--: load initial user data


--: load initial oauth app data


--: Running collectstatic

0 static files copied to '/app/static_cdn/static_root', 119 unmodified.
------: collectstatic complete


--: Starting Gunicorn.
[2019-01-11 13:26:47 +0000] [21] [INFO] Starting gunicorn 19.9.0
[2019-01-11 13:26:47 +0000] [21] [INFO] Listening at: http://0.0.0.0:9010 (21)
[2019-01-11 13:26:47 +0000] [21] [INFO] Using worker: sync
[2019-01-11 13:26:47 +0000] [23] [INFO] Booting worker with pid: 23
[2019-01-11 13:26:47 +0000] [24] [INFO] Booting worker with pid: 24
[2019-01-11 13:26:47 +0000] [25] [INFO] Booting worker with pid: 25
Not Found: /static/admin/css/fonts.css

編輯3:Nginx日志

在運行docker-compose up它會顯示以下日志

在此處輸入圖片說明

但是運行docker logs originor-nginx並沒有任何結果

在“網絡”初始化的某個位置,您必須調用manage.py collectstatic將應用程序的靜態文件放入您的卷中。 更多信息https://docs.djangoproject.com/en/2.1/howto/static-files/

UPD:用於uwsgi代理的nginx conf:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM