Docker и Nginx: порт 80 и 403: адрес уже используется

У меня есть VPS сервер на Ubuntu, я запускаю несколько проектов Django с Nginx и Gunicorn.

Недавно я решил развернуть свой последний проект с помощью Docker.

Все работает, кроме порта 80. Я могу запустить сайт на example.com:1330, но как только я меняю его на 80, я получаю следующую ошибку:

  err: ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint project-nginx (a4417bdb121b0afb1e57e11b68dd0eb74f770ed74f654a2722f4cd74121): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
err: Encountered errors while bringing up the project.

Вот часть моего:

  • docker-compose.yml

    nginx: имя_контейнера: portfolio-nginx перезапуск: если не остановлен сборка: ./nginx порты: - "80:80" # не работает - "1330:80" # работает

  • Nginx

    .

    upstream project { server project-django:8000; }

    server {

     listen 80;
     server_name example.com;
    
     location / {
         proxy_pass http://project;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $host;
         proxy_redirect off;
     }
    
     location /static/ {
         root /code;
     }
    
     location /media/ {
         root /code;
     }
    

    }

Я думал, что проблема в том, что у меня уже запущен Nginx на порту 80:

sudo netstat -ntulp | grep 80

После того, как я убиваю процесс, сайт docker работает на порту 80. Но я теряю другие проекты Django, которые не запускаются на docker.

Пожалуйста, есть идеи?

Ваш проект Django использует порт 80, есть 3 основных решения:

  • Запустить Django на другом порту
  • Запустите этот проект на другом порту
  • Разместить проекты на разных поддоменах с помощью NGINX
Вернуться на верх