안녕하세요,
최근 Debian 서버에 Discourse를 설치하려고 했는데, 사이트 접근을 위해 포트 변경을 시도한 것 외에는 모든 과정이 순조로웠습니다. 하지만 사이트에는 접속할 수 없었고, nginx만 표시되었습니다. 그래서 문제를 파악한 후, 내 네트워크를 가리키는 커스텀 IP와 커스텀 네트워크를 설정해 보았지만, 여전히 접속이 되지 않고 계속 오류가 발생합니다. 제가 받는 오류 메시지는 다음과 같습니다:
./launcher start app --docker-args --network discourse_back --ip 192.168.1.4
x86_64 arch detected.
docker: Error response from daemon: network -i not found.
Your Docker installation is not working correctly
See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam
또한 hello-world를 사용하여 먼저 테스트해 보았지만, 이 경우에는 정상적으로 작동했습니다.
docker run -it --network discourse_back --ip 192.168.1.4 hello-world
Hello from Docker!
. . .
이 인스턴스를 인터넷에서 사용 가능하게 하려는 경우라면, app.yml에서 .local 도메인을 사용하면 문제가 발생할 수 있습니다. 아마도 이 시스템은 가정 내 사용이나 테스트 목적으로만 사용하려는 것 같아 참고해 드리고자 합니다.
Docker 네트워킹이 올바르게 작동하여 호스트 머신 외부에서 해당 IP 주소로 컨테이너에 접근할 수 있다고 가정하면, DNS 설정을 통해 discourse.simonz.local이 해당 IP 주소로 해석되도록 해야 합니다.
현재 발생하고 있는 상황은 도메인이 호스트 머신으로 해석되고 있으며, 접근 시 포트(예: discourse.simonz.local:1234)를 지정하지 않아 Docker 컨테이너 대신 nginx에 도달하고 있는 것으로 보입니다.
Discourse를 다른 포트에서 사용하려는 경우, 다른 IP 주소가 필요하지 않을 가능성이 높습니다. 표준 포트에서 Discourse를 사용하되 nginx도 표준 포트에서 사용하려면, DNS를 통해 올바른 IP로 유도하거나 nginx가 Discourse를 프록시하도록 설정해야 합니다.
.local 도메인은 일반적으로 시스템의 설정된 호스트명 기반으로 시스템이 공지(announce)합니다. Discourse는 일반적으로 이를 수행할 필요가 없으므로, 컨테이너에는 이를 수행할 기능이 없을 수 있습니다.
표준 포트, 다른 IP, DNS 경로를 통해 설정하려는 경우, 이는 Discourse의 범위를 벗어난 것이며, 네트워크의 다양한 요인에 따라 설정 방법이 달라집니다.
목적이 같은 호스트에서 nginx와 Discourse를 모두 사용 가능하게 하는 것이라면, 위에서 링크한 프록시 방식을 권장합니다. 이는 기술적으로 지원되지 않는 설치 방식이지만, 더 일반적인 설정이며 더 많은 사람들이 도움을 줄 수 있는 방식입니다.
VM에 IP 주소가 두 개 있는 경우, Docker 컨테이너의 IP 주소에 대해 별도로 할 일이 없습니다. …1.3:80/443은 호스트로, …1.4:80/443은 Docker 컨테이너로 라우팅되도록 방화벽을 설정하기만 하면 됩니다.
이 환경이 Linux라면, AFAIK(제가 아는 한) iptables와 ufw가 가장 일반적으로 사용되는 소프트웨어입니다. 해당 라우팅을 설정하는 방법에 대해서는 관련 문서나 커뮤니티에서 도움을 구해야 할 가능성이 높습니다.
다만, 최종적으로 Discourse를 설치하려는 환경과 유사한 구성을 테스트할 필요가 없는 한, 이 시범 운영을 위해 두 번째 VM을 실행하는 것을 여전히 권장합니다. Discourse를 자체 VM 내에서 실행하면 다른 HTTP/HTTPS 소프트웨어와 함께 Discourse를 실행할 때 발생할 수 있는 복잡성이 사라지기 때문입니다.