-1

我设法使用 docker compose(Django 容器 + Nginx 容器)在本地运行我的 Django 应用程序,它工作正常,但是当我想在容器的 Azure Web 应用程序中运行它时,nginx 找不到资源。我不知道我是否应该更改一些配置以便它可以在 Azure 服务中工作,或者我需要在 azure 应用程序设置中启用端口以便我的容器可以通信。

这是我的 nginx 配置(nginx.conf):

upstream myapp {
    server web:8000;
}

server {

    listen 80;
    server_name myappname.azurewebsites.net;

    location / {
        proxy_pass http://myapp;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /home/app/web/static/;
    }

    location /media/ {
        alias /home/app/web/media/;
    }

}

我不知道为什么当我运行 docker compose 时它在本地工作,但在 azure web app nginx 中找不到静态文件。

如果我需要澄清或包括其他任何内容,请告诉我。

提前致谢。

4

1 回答 1

0

谢谢乔巴·S。。发布您的建议作为帮助其他社区成员的答案。

python manage.py collectstatic

您需要该命令让 Django 将所有静态文件复制到 STATIC_ROOT 设置中指定的目录。请记住,每次对静态文件进行更改时,您都必须执行该操作。

降低开发容器的速度:

$ docker-compose down -v

测试:

$ docker-compose -f docker-compose.prod.yml up -d --build
$ docker-compose -f docker-compose.prod.yml exec web python manage.py migrate --noinput
$ docker-compose -f docker-compose.prod.yml exec web python manage.py collectstatic --no-input --clear

您还可以docker-compose -f docker-compose.prod.yml logs -f 通过 Nginx 成功提供对静态文件的请求在日志中进行验证。

可以参考Dockerizing Django with Postgres, Gunicorn, and Nginx , Cannot locate static files after deploying with docker and Nginx failed to serve django static or media files

于 2021-10-13T09:14:40.583 回答