Nginx не находит статические файлы в приложении Dockered Django в Azure Web App для контейнеров

Мне удалось запустить мое приложение Django локально с помощью docker compose (контейнер Django + контейнер Nginx), и оно работает нормально, но когда я хочу запустить его в Azure web app для контейнеров, 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 не может найти статические файлы.

Пожалуйста, дайте мне знать, если мне нужно уточнить или включить что-то еще.

Заранее спасибо.

Спасибо Joseba 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 и Nginx failing to serve django static or media files

Вернуться на верх