Home > Software > How to Deploy Rocket.Chat with Docker Compose: A Comprehensive Guide

How to Deploy Rocket.Chat with Docker Compose: A Comprehensive Guide

Anastasios Antoniadis

Learn how to deploy Rocket.Chat efficiently using Docker Compose with our comprehensive guide. This step-by-step tutorial covers everything from setup to access, making it easy to launch your own customizable chat server for team collaboration and communication.

Docker (1)

Rocket.Chat is a leading open-source communication platform enabling team collaboration, live chat, video conferencing, and file sharing. Its flexibility and extensibility make it popular for businesses and communities seeking a customizable chat solution. For those looking to deploy Rocket.Chat, Docker Compose offers a streamlined and efficient method to get your server up and running. This article will walk you through the process of deploying Rocket.Chat using Docker Compose, ensuring a smooth and hassle-free setup.

Prerequisites

Before proceeding with the deployment, ensure you have the following prerequisites in place:

  • Docker installed on your server
  • Docker Compose installed
  • A domain name (optional, but recommended for production environments)

Step 1: Create a Docker Compose File

The heart of deploying Rocket.Chat with Docker Compose lies in the docker-compose.yml file. This file defines the services, networks, and volumes necessary for your Rocket.Chat server. Here’s an example Docker Compose file to get you started:

version: '3.8'
services:
  rocketchat:
    image: rocket.chat:latest
    command: >
      bash -c
      "for i in `seq 1 30`; do
        node main.js &&
        s=$$? && break || s=$$?;
        echo \"Tried $$i times. Waiting 5 secs...\";
        sleep 5;
      done; (exit $$s)"
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - PORT=3000
      - ROOT_URL=http://localhost:3000
      - MONGO_URL=mongodb://mongo:27017/rocketchat
      - MONGO_OPLOG_URL=mongodb://mongo:27017/local
    depends_on:
      - mongo
    volumes:
      - ./uploads:/app/uploads

  mongo:
    image: mongo:4.0
    restart: unless-stopped
    command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
    volumes:
      - ./data/db:/data/db

  # MongoDB replica set initialization
  # This service's sole purpose is to execute the commands necessary to initiate the replica set.
  # It will exit after the commands are executed.
  mongo-init-replica:
    image: mongo:4.0
    command: >
      bash -c
      "for i in `seq 1 30`; do
        mongo mongo/rocketchat --eval \"
          rs.initiate({
            _id: 'rs0',
            members: [{ _id: 0, host: 'mongo:27017' }]
          })
        \" &&
        s=$$? && break || s=$$?;
        echo \"Tried $$i times. Waiting 5 secs...\";
        sleep 5;
      done; (exit $$s)"
    depends_on:
      - mongo

networks:
  default:
    external:
      name: my-network

This configuration sets up Rocket.Chat to run on port 3000 and uses MongoDB for storage. It also includes a service to initialize MongoDB as a replica set, which is required for Rocket.Chat.

Explanation of Key Components:

  • rocketchat: The main Rocket.Chat service running the latest Rocket.Chat image.
  • mongo: The MongoDB service configured to run as a replica set, which is necessary for Rocket.Chat’s data storage.
  • mongo-init-replica: A temporary service that initializes the MongoDB replica set. It exits once the replica set is initialized.

Step 2: Run Docker Compose

With your docker-compose.yml file ready, deploy Rocket.Chat by running the following command in the same directory as your Docker Compose file:

docker compose up -d

This command will start all the defined services in detached mode.

Step 3: Accessing Rocket.Chat

After the containers have started, you can access Rocket.Chat by navigating to http://localhost:3000 or http://<your-domain-name> if you’ve configured a domain name. Follow the on-screen instructions to complete the setup of your Rocket.Chat server.

Conclusion

Deploying Rocket.Chat using Docker Compose simplifies setting up a robust communication platform for your team or community. By following the steps outlined in this guide, you can have a Rocket.Chat server running in minutes, leveraging the power and flexibility of Docker containers. Whether for business communication, community building, or team collaboration, Rocket.Chat offers a versatile solution that meets the diverse needs of its users.

Anastasios Antoniadis
Follow me
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x