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