만약 지금 다시 개발한다면, 자체적으로 만든 launcher 명령어(도커 이미지를 빌드하고 실행하는 기능) 대신 docker-compose를 사용하는 것이 유일한 차이점일 것 같습니다.
저와 인터넷이 다른 곳에 계신 것 같습니다. 제가 보는 바로는, 5대 이상의 서버에서 소프트웨어를 관리하는 대부분의 사람들은 컨테이너를 사용하여 시스템을 관리하고 있습니다. 개발자들도 모든 구성 요소의 버전이 일관되게 유지되는지 확인하기 위해 노트북에서 컨테이너로 실행하는 경우가 점점 더 늘고 있습니다.
단일 노트북에서 Discourse/rails/ember 개발 환경을 관리하는 것조차 상당한 도전 과제입니다.
맞습니다. 도커 없이 사용할 수 있는 포럼을 원하신다면, Discourse를 사용하지 않는 것이 좋습니다.
저는 이에 동의합니다. 방금 Docker와 docker-compose에 대한 크래시 코스를 수강했는데, docker-compose가 100% 더 나은 방법이라고 생각합니다. Discourse가 docker-compose를 사용했다면, 포스트를 작성할 필요 없이 이 문제를 해결할 수 있었을 것입니다.
docker-compose는 launcher가 수행하는 것과 유사한 무거운 작업을 처리하지만, docker-compose를 사용하면 네트워크와 브리지를 쉽게 구성할 수 있었습니다.
동의합니다. 저도 컨테이너를 사용합니다. 순수한 LXC 컨테이너를요. 추가 소프트웨어가 필요 없습니다. 하지만 생각만큼 간단하지는 않습니다. 예를 들어, 제 서버 중 하나에는 개발자를 위한 ‘브론즈’ 패키지가 있습니다. 저렴하고 설정이 쉬운 패키지입니다. 결제가 확인되는 순간, 메인 서버는 사용자가 선택한 LXC 컨테이너 또는 VM을 생성하는 요청을 받습니다. 당연히 도메인 이름이 필요하며, 없으면 서버(LXC/VM)를 위한 커스텀 서브도메인이 발급됩니다. 또한 사용자에게 자체 네트워크를 구성하도록 요청하며, 이 네트워크는 메인 네트워크와 상호 접근이 불가능하도록 설정됩니다. 기본적으로 작은 AWS와 같은 구조입니다.
개발 목적의 랩톱에서 메인 컴퓨터 파일과 개발 파일(네트워크 포함)을 분리하기 위해 Docker는 훌륭할 것입니다.
저는 Discourse/rails/ember로 직접 개발해 본 적이 없으므로 동의하기도, 반대하기도 어렵습니다. 그것은 제 전문 분야를 벗어나며, 개발자들이 더 쉽다고 한다면 제가 모르는 것에 대해 반박할 위치가 아닙니다.
이것이 제 문제입니다. 사용 가능한 모든 포럼 소프트웨어에 대해 충분한 조사를 했고, 꽤 많은 것을 사용해 봤습니다.
제 선택지는 결국 두 포럼으로 좁혀졌습니다:
Discourse
Flarum
모든 측면에서 최고의 포럼 소프트웨어인 Discourse를 선택했습니다. 제 Docker 경험은 Nginx Reverse Proxy Manager를 사용한 것이 전부였기 때문입니다.
.yml 파일에 제 정보를 입력하고 docker-compose up -d만 실행하면 된다고 생각했습니다. 하지만 틀렸습니다.
현재 겪고 있는 문제는 해결될 수 있으며, 그저 해결 방법을 파악하는 데 시간이 좀 걸릴 뿐입니다.
다른 좋은 포럼 소프트웨어에 대한 모욕은 아니지만, 저는 많은 플랫폼에서 Discourse를 사용해 봤고, Discourse가 시장에 나와 있는 최고의 포럼이라고 생각합니다. 따라서 Flarum을 사용하는 것을 거부합니다.
아니요, Docker는 전혀 나쁘지 않습니다. Docker는 개인 기기를 사용해 개발하거나 심지어 업무용 컴퓨터를 사용하는 개발자들에게 완벽합니다. 대부분의 개발자가 Linux를 메인 OS로 사용하지 않기 때문에, LXC 컨테이너를 만드는 것은 그렇게 쉬울 수 없습니다. 바로 여기서 Docker가 빛을 발합니다. Docker는 모든 주요 플랫폼을 지원하므로 개발자들이 쉽게 협업할 수 있으며, 메인 OS에서 사용되지 않아야 하는 파일들로 인해 시스템 전체를 망가뜨리지 않는다는 장점도 있습니다.
더 자세히 설명할 수도 있지만, 제 생각에 최신 docker/docker-compose는 Discourse에 완벽합니다. Discourse는 많은 이동 부품을 필요로 하므로 docker-compose를 사용하면 번들링이 비교적 쉽기 때문입니다. 그렇게 하면 문제가 발생했을 때 개발자들이 정확히 무엇을 해야 하는지 알 수 있습니다.
Discourse에 대한 아이디어가 하나 있지만, 먼저 제 설치 환경을 파악해 보겠습니다.
Rails 애플리케이션의 호스팅은 복잡합니다. 서버에 이미 Postgres, Redis, Ruby가 설치되어 있더라도 Sidekiq과 Rails 프로세스를 실행하고 모니터링하는 것, 그리고 Nginx를 구성하는 것에 대해 여전히 신경 써야 합니다. Docker를 사용하면, 완전히 최적화된 Discourse 구성이 단순한 컨테이너 형태로 제공되며, 웹 기반 GUI를 통해 버튼만 클릭하면 Discourse의 새 버전으로 업그레이드할 수 있습니다.
Nginx Reverse Proxy가 작동하는 데 필요한 ENV 변수로 Discourse를 시작하도록 launcher를 설정하는 것은 그리 어렵지 않습니다. 대부분은 단순히 YML 파일에 ENV를 추가하거나, ./launcher start-command app 명령으로 가져온 값에 추가하면 됩니다.
docker-compose는 Discourse가 처음 시작될 때 큰 도움이 되지 않았고, 아예 존재하지 않았을 수도 있습니다.