유저랜드 프록시 시작 오류: listen tcp4 0.0.0.0:443: bind: address already in use

음, Discourse를 사용해 보고 싶어서 docker로 설치하고 있는데, 이 오류가 나요. 실제로 검색을 해 보면 이 오류를 겪는 사람이 꽤 많다는 걸 알 수 있지만, 해결 방법을 모르겠어요.

starting up existing container

    + /usr/bin/docker start app

    Error response from daemon: driver failed programming external connectivity on endpoint app (7336c875bdf9e3f18f08ca0af0a5aad10181ba37508f92c68f87a75637c56583): Error starting userland proxy: listen tcp4 0.0.0.0:443: bind: address already in use

    Error: failed to start containers: app

이미 /opt/discourse/containers/app.yml 파일에 이렇게 설정해 두었는데,

expose:

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

웹 서버에서 Apache를 이용해 https로 웹사이트를 운영 중이라 443 포트가 이미 사용 중이라는 건 알고 있어요. 그런데 app.yml에서 443 포트를 8443으로 재매핑해 두었는데도 왜 이런 오류가 나는 걸까요?

다음 문서를 참고해 보시기 바랍니다: Discourse 공식 표준 설치 및 기존 Apache 사이트가 있는 서버에 Discourse 설정하기.

포함된 경로로 보아 Bitnami 설치 문제 해결도 확인해 보시는 것이 좋습니다.

해당 문서는 확인했지만, app.yml을 변경하면 사용되는 포트에 영향을 미쳐야 하지 않나요? 아니면 무시되는 건가요? Discourse는 제가 시도해 본 앱 중 포트가 일종의 "하드코딩"되어 있어 변경할 수 없는 첫 번째 앱입니다.

제 웹사이트가 정상적으로 운영되고 있는데, 고객과 웹사이트 사이에 또 다른 소프트웨어를 끼워 넣는 것은 정말로 원치 않습니다. 대신 Apache에서 서브도메인을 Discourse로 매핑하는 것이 더 나을 것 같습니다.

그렇다면 포트 443에서 실행되도록 강제되는 같은 동작을 하는 다른 애플리케이션을 사용해야 하는 경우 어떻게 해야 하나요?

네, 그렇습니다. 하지만 ./launcher rebuild app (또는 아마 ./launcher destroy app;./launcher start app)를 실행해야 합니다. 제 추측으로는 파일을 편집한 후 이미 포트가 설정된 컨테이너를 다시 시작했을 가능성이 큽니다.