본문 바로가기

Development Tools/Docker

[ Docker ] Rocket.Chat 설치

[ Docker Desktop ] ⇨ [ 설정 아이콘 ] ⇨ [ Gerneral ] ⇨ [ Use Rosetta for.. ] 체크 ⇨ [ Apply & restart ]

 

Rocket.Chat 설치에 앞서 맥 사용자의 경우 Use Rosetta for x86_64/amd64 emulation on Apple silicon 를 체크해제 한다.

이 옵션을 활성화하면 x86_64/amd64 아키텍처로 컴파일된 Docker 이미지를 실행할 때 Rosetta2를 사용하여 컨테이너를

생성하는데 해당 아키텍처 생성에 버그가 있어 MongoDB 5.X 이상의 버전의 경우 실행되지 않고 버그가 발생한다.

 (MongoDB 를 설치 할 때 플랫폼을 aarch64 로 할 경우 문제가 없긴하다.)

cd /tmp

# Rocket.Cart Compose 파일 다운로드
curl -L https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml -O

export ROCKET_IP=`ifconfig | grep -oE 'inet ([0-9]{1,3}\.){3}[0-9]{1,3}' | grep -v 127.0.0.1 | sed 's/inet //'`
export ROCKET_PORT=3000

cat <<ROCKET_ENVIROMENT > /tmp/.env
### Rocket.Chat configuration

# Rocket.Chat version
# see:- https://github.com/RocketChat/Rocket.Chat/releases
#RELEASE=
# MongoDB endpoint (include ?replicaSet= parameter)
#MONGO_URL=
# MongoDB endpoint to the local database
#MONGO_OPLOG_URL=
# IP to bind the process to
#BIND_IP=
# URL used to access your Rocket.Chat instance
ROOT_URL=http://${ROCKET_IP}:${ROCKET_PORT}
# Port Rocket.Chat runs on (in-container)
PORT=${ROCKET_PORT}
# Port on the host to bind to
#HOST_PORT=

### MongoDB configuration
# MongoDB version/image tag
#MONGODB_VERSION=
# See:- https://hub.docker.com/r/bitnami/mongodb

### Traefik config (if enabled)
# Traefik version/image tag
#TRAEFIK_RELEASE=
# Domain for https (change ROOT_URL & BIND_IP accordingly)
#DOMAIN=
# Email for certificate notifications
#LETSENCRYPT_EMAIL=
ROCKET_ENVIROMENT

# Rocket.Cart 실행
docker compose up -d

# 컨테이너 실행 상태 확인
docker ps -a

# Rocket.Cart 실행 상태 확인
# 컨테이너 명은 명시적으로 지정하지 않았을 경우 
# [실행한폴더]-[컨테이너이미지명]-[번호] 가 된다
docker logs tmp-rocketchat-1

 

다운로드 받은 Rocket.Cart Compose 파일은 아래와 같다.

# Rocket.Cart Compose 파일
# compose.yml

volumes:
  mongodb_data: { driver: local }

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
      traefik.http.routers.rocketchat.tls.certresolver: le
    environment:
      MONGO_URL: "${MONGO_URL:-\
        mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
        ${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
      MONGO_OPLOG_URL: "${MONGO_OPLOG_URL:\
        -mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
        local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
      ROOT_URL: ${ROOT_URL:-http://localhost:${HOST_PORT:-3000}}
      PORT: ${PORT:-3000}
      DEPLOY_METHOD: docker
      DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-}
      REG_TOKEN: ${REG_TOKEN:-}
    depends_on:
      - mongodb
    expose:
      - ${PORT:-3000}
    ports:
      - "${BIND_IP:-0.0.0.0}:${HOST_PORT:-3000}:${PORT:-3000}"

  mongodb:
    image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-5.0}
    restart: always
    volumes:
      - mongodb_data:/bitnami/mongodb
    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}

 

[ docker ps -a ]
[ docker logs rocketchat-rocketchat-1 ]
[ http://[내 아이피]:3000 ]

 

※ 참조문헌

https://docs.rocket.chat/deploy/deploy-rocket.chat/deploy-with-docker-and-docker-compose