Profile picture

[Docker] 폐쇄망 환경에서 Rocket.Chat 메신저 구축하기

JaehyoJJAng2024년 03월 01일

▶︎ 개요

image
외부 인터넷 연결이 불가한 폐쇄망에서 요긴하게 사용할 수 있는 사내 채팅 서버를 구축해보려고 한다.

Rocket.Chat 이라는 웹 채팅 프로젝트이다.

폐쇄망인 경우 인터넷 연결이 불가하므로 외부 도커 이미지를 다운로드 할 수는 없다.

이런 경우 몇 가지 방법이 있을 수 있다.

  • 1. 외부에서 이미지 다운로드 후 내부망으로 이동
    • USB 반입이 가능한 상황이라면 Rocket.Chat 도커 이미지를 USB에 다운로드하여 사내 이미지 레지스트리 서버에 업로드하거나 채팅 서버에 직접 업로드
  • 2. 사내 레지스트리 서버 구축
    • 내부망에서 사용 가능한 사내 레지스트리 서버 구축
    • 도커 이미지를 해당 서버에 업로드 후, 내부망에서 해당 레지스트리에 접근하여 이미지 다운로드
    • 관련 내용 -> 도커 프라이빗 레지스트리 서버 구축

그리고 채팅 브라우저 접속 시, 매번 IP 주소를 입력하기에는 상당히 불편하므로

사내에 DNS 서버가 구축되어 있다면 채팅 서버에 대한 레코드를 따로 추가해주면 될 것 같다.

이번 실습에서는 사내 레지스트리 서버에 Rocket.Chat 이미지가 있다고 가정하고 진행해보겠다.


▶︎ 설치

  • 설치 오류시 Rocket.Chat 공식에서 업데이트 된 .yaml을 참고해보도록 합시다.

Docker Compose 설정 작성

~/rocketChat/docker-compose.yaml

services:
  rocketchat:
    image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest}
    restart: always
    labels:
      traefik.enable: "true"
      traefik.http.routers.rocketchat.rule: Host(`${DOMAIN:-}`)
      traefik.http.routers.rocketchat.tls: "true"
      traefik.http.routers.rocketchat.entrypoints: https
    environment:
      MONGO_URL: "mongodb://mongodb:27017/rocketchat"
      MONGO_OPLOG_URL: "mongodb://mongodb:27017/local"
      ROOT_URL: "http://localhost:3000"
      PORT: ${PORT:-3000}
      DEPLOY_METHOD: docker
    depends_on:
      - "mongodb"
    expose:
      - "3000"
    ports:
      - "3000:3000"
    networks:
      - "chat-net"

  mongodb:
    image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-5.0}
    restart: always
    volumes:
      - mongodb_data:/bitnami/mongodb
    expose:
      - "27017"
    environment:
      MONGODB_REPLICA_SET_MODE: primary
      MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
      MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
      MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb}
      MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}
      MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb}
      MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
      ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
    networks:
      - "chat-net"

volumes:
  mongodb_data: { driver: local }

networks:
  chat-net:
    driver: bridge
    external: false

컨테이너 생성

docker-compose -f compose.yml up -d --build

‣ mongodb 오류

mongodb 컨테이너에서 아래와 같은 에러가 반복적으로 발생.

mongodb  | mongodb 09:12:58.70 INFO  ==> Initializing MongoDB...
mongodb  | mongodb 09:12:58.77 INFO  ==> Deploying MongoDB from scratch...
mongodb  | /opt/bitnami/scripts/libos.sh: line 346:    48 Illegal instruction     (core dumped) "$@" > /dev/null 2>&1

구글링 해보니 동일한 이슈를 가진 사람들이 #issues/53407를 남겼었음.
image
증상을 보니 AMD 계열 리눅스 / Mac M1, M2, M3에서 동일하게 발생.

AVX CPU가 미지원되는 CPU의 경우 bitnami/mongodb 컨테이너가 정상적으로 실행되지 않는다고 함.

이건 하드웨어적인 문제라 내가 어찌 해결할 수 있는 문제가 아니라서 해결되기를 기다리는 것 뿐.


Loading script...