gpt4 book ai didi

python - docker-compose的nginx和django设置

转载 作者:行者123 更新时间:2023-12-02 19:19:34 24 4
gpt4 key购买 nike

我已经设置了nginxdjango(命名为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共享-即一个安装在Django容器STATIC_ROOT和nginx容器静态文件路径上的通用docker卷。

此命令可以用作django容器的entrypoint脚本的一部分,以在每次启动时自动运行。

  python:
volumes:
- static-volume:/app/static

nginx:
volumes:
- static-volume:/static

volumes:
static-volume:

或者可以生成静态文件,并以其他方式将其提供给nginx /static,即作为ci构建/部署过程中的 Artifact 。

或者,您可以使用 whitenoise并让django提供其静态文件(而不是媒体文件)。

此外,文件可以像Amazon S3一样存储(和分发)在云中。

关于python - docker-compose的nginx和django设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60817306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com