Ошибка запуска прокси userland: listen tcp4 0.0.0.0:443: bind: адрес уже используется

Хорошо, я хочу попробовать Discourse, поэтому устанавливаю его через Docker, но получаю эту ошибку. На самом деле, при поиске я вижу, что многие сталкиваются с этой проблемой, но не могу понять, как её решить.

запуск существующего контейнера

    + /usr/bin/docker start app

    Ошибка ответа от демона: драйвер не смог настроить внешнюю связность для конечной точки app (7336c875bdf9e3f18f08ca0af0a5aad10181ba37508f92c68f87a75637c56583): Ошибка запуска прокси пользовательского пространства: listen tcp4 0.0.0.0:443: bind: адрес уже используется

    Ошибка: не удалось запустить контейнеры: app

Я уже указал это в /opt/discourse/containers/app.yml:
expose:

  • “8880:80” # http
  • “8443:443” # https

Это веб-сервер, на котором запущен сайт через Apache с HTTPS, так что да, порт 443 уже занят. Но если я настроил app.yml для перенаправления порта 443 на 8443, почему я всё ещё получаю эту ошибку?

Вам следует ознакомиться с официальной стандартной установкой Discourse и инструкцией как настроить Discourse на сервере с существующими сайтами Apache.

Судя по указанному пути, вам также стоит проверить решение проблем при установке Bitnami.

Я видел этот документ, но разве изменение app.yml не должно влиять на используемые порты, или оно игнорируется? Discourse — первое приложение, с которым я столкнулся, где порт «зашит» в коде, и я не могу его изменить.

Мне совсем не нравится добавлять ещё один слой ПО между моими клиентами и моим сайтом, который уже успешно работает. Я бы предпочел настроить в Apache поддомен, ведущий на Discourse.

А что, если у меня появится другое приложение, которое ведёт себя аналогично и вынуждено работать на порту 443?

Да, но нужно выполнить ./launcher rebuild app (или, возможно, ./launcher destroy app; ./launcher start app). Я предполагаю, что вы просто отредактировали файл, а затем перезапустили контейнер, у которого порты уже были настроены.