Учебные руководства по Docker привязываются к порту 80 и дают сбой на локальном и удаленном серверах, так как порт 80 уже используется - PullRequest
0 голосов
/ 25 сентября 2019

Попытка обернуть голову вокруг всех этих учебных пособий по Docker, и на самом деле нет никакого объяснения тому, что такое порт 80.Просто «привязка к порту 80».

Это 3-е руководство по Docker, которое я взял с той же ошибкой после запуска примера Dockerfile:

Ошибка запуска прокси-сервера пользователя: прослушиваниеtcp 0.0.0.0:80: bind: адрес уже используется

Итак, я понял, что порт 80 в основном является портом по умолчанию, что позволяет моему приложению работать на example.com вместоexample.com:80 - например.Мой веб-сервер и локальная машина жалуются, что этот порт используется.Конечно, он используется по умолчанию.

Итак, почему все эти руководства по Docker привязаны к порту 80?Могу поспорить, они делают это правильно, и я что-то упускаю ... но не могу найти четкого решения или описания

Вот учебник, который я делаю: Установка WordPress от Digital Ocean с Docker: https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose

Конечно, порт 80 мне не удался:

webserver:
  depends_on:
    - wordpress
  image: nginx:1.15.12-alpine
  container_name: webserver
  restart: unless-stopped
  ports:
    - "80:80"
  volumes:
    - wordpress:/var/www/html
    - ./nginx-conf:/etc/nginx/conf.d
    - certbot-etc:/etc/letsencrypt
  networks:
    - app-network

ИзменениеЭто не вызывает ошибки, но это означает, что мы можем решить только http://example.com:90 -

ports:
  - "90:80"

Чего мне здесь не хватает?Почему все эти определения порта 80 не работают локально на моем Mac и на удаленном сервере Digital Ocean Ubuntu8.1?

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Есть ли у вас что-то еще работает на порту 80?Вы можете попробовать curl localhost:80 или lsof -i :80;по умолчанию у вас может работать Apache или что-то еще, что вам нужно будет убить.

0 голосов
/ 25 сентября 2019

example.com и example.com:80 - это одно и то же.Здесь некоторое приложение на вашем хосте уже прослушивает порт 80, оно не имеет никакого отношения к контейнеру.Возможно, вы также используете сервер nginx на хосте.Ты ?

...