[英]nginx and django setting for docker-compose
我有nginx
和django
(命名為 python 容器)的設置。
我可以使用localhost:8000
訪問查看首頁,但是我無法獲取靜態文件,也無法使用 API localhost:8000/api/items
我是 nginx 和 django 的新手,所以仍然很困惑。
我正在計划這樣的設置
普通文件browser ->8000 -> nginx -> 8001 ->django
對於靜態文件
django ->8000 -> nginx
正確嗎???或者我應該在哪里修復??
這些是下面的設置。
docker-composer.yml
version: '3'
services:
python:
container_name: python
build: ./python
command: uwsgi --socket :8001 --module myapp.wsgi --py-autoreload 1 --logto /tmp/mylog.log
expose:
- "8001"
nginx:
image: nginx:1.13
container_name: nginx
ports:
- "8000:8000"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./nginx/static:/static
depends_on:
- python
app_nginx.conf
upstream django {
ip_hash;
server python:8001;
}
server {
listen 8000;
server_name 127.0.0.1;
charset utf-8;
location /static {
alias /static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
server_tokens off;
uwsgi_prams
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
靜態文件是在 Django 管理命令collectstatic
上生成的。
如果在 django 容器中運行 - 這些文件將僅在 django 容器中生成並存在。 因此, STATIC_ROOT
應該與 nginx 共享 - 即一個常見的STATIC_ROOT
卷安裝到 django 容器STATIC_ROOT
和 nginx 容器靜態文件路徑。
此命令可用作 django 容器的entrypoint
腳本的一部分,在每次啟動時自動運行。
python:
volumes:
- static-volume:/app/static
nginx:
volumes:
- static-volume:/static
volumes:
static-volume:
或者可以通過其他方式生成靜態文件並提供給 nginx /static
,即作為 ci 構建/部署期間的工件。
或者您可以使用whitenoise並使 django 為其靜態文件(但不是媒體文件)提供服務。
此外,文件可以存儲(和分發)在像 Amazon S3 這樣的雲中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.