I worked through this over the last 24 hours with a succesful upgrade from RC v7 and MongoDB v7 to RC v8.0.1 and MongoDB v8.2.3 for test docker environment.
Found here (RC develop compose.yml) line 133:
mongo:
image: mongodb/mongodb-community-server:8.2-ubi8
Upgrade notes:
## Take backup of existing database for restoration post MongoDB version upgrade ##
# Confirm correct DB name. Make backup of the correct database...
$ docker exec -it rocketchat-mongodb-1 mongosh --eval "show dbs"
admin 128.00 KiB
config 268.00 KiB
local 2.17 GiB
rocketchat 1.38 GiB
# Confirm stats match those shown in Rocketchat-GUI > admin > workspace
docker exec -it rocketchat-mongodb-1 mongosh rocketchat --eval "db.users.countDocuments()" # number of users
docker exec -it rocketchat-mongodb-1 mongosh rocketchat --eval "db.rocketchat_room.countDocuments()" # number of rooms
docker exec -it rocketchat-mongodb-1 mongosh rocketchat --eval "db.rocketchat_message.countDocuments()" # number of messages
# Take backup of DB
$ docker exec -it rocketchat-mongodb-1 mongodump \
--db rocketchat \
--archive \
--verbose \
> ~/backup/rocketchat-v7-$(date +%Y%m%d).raw
# Verify backup
$ docker cp ~/backup/rocketchat-v7-20260118.raw rocketchat-mongodb-1:/tmp/full.raw # copy into container
$ docker exec rocketchat-mongodb-1 mongorestore --archive=/tmp/full.raw --dryRun --verbose | tail -20
...
2026-01-17T23:49:57.837+0000 dry run completed
2026-01-17T23:49:57.838+0000 0 document(s) restored successfully. 0 document(s) failed to restore.
# success, no unexpected end of file or other error
# if errors, try replacing the date expression from the backup file name creation with just the word "full" and take backup again
# Cleanup backup dump from the container
$ docker exec -u 0 -it rocketchat-mongodb-1 rm /tmp/full.raw # execute as user 0(root) within container (permissions req'd).
# Duplicate backup to remote server/file system
$ cp rocketchat-v7-20260118.raw <remote destination>/rocketchat-v7-20260118.raw
# Is the "local" DB to be backed up also? No — the "local" database is MongoDB's internal system database storing replica set oplog, config, and metadata. Backing it up will corrupt replication (rs0 state, elections), and restores do not merge properly across versions.
## Upgrade container images and new requirements ##
# Alter Compose.yml and .env with changes from bitnami image to mongodb community server image.
# Note changed DB volume mapping (different container internal mount point). See also change of permissions for external (host) volume.
# v7 compose.yml
volumes:
mongodb_data: { driver: local }
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE}
restart: unless-stopped
environment:
MONGO_URL: ${MONGO_URL}
MONGO_OPLOG_URL: ${MONGO_OPLOG_URL}
ROOT_URL: <your URL>
PORT: ${PORT}
DEPLOY_METHOD: docker
DEPLOY_PLATFORM: ${DEPLOY_PLATFORM}
depends_on:
- mongodb
expose:
- ${PORT}
ports:
- "${BIND_IP}:${HOST_PORT}:${PORT}"
mongodb:
image: docker.io/bitnami/mongodb:${MONGODB_VERSION}
restart: unless-stopped
volumes:
- /<host dir>/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_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
# v8 compose.yml
volumes:
mongodb_data: { driver: local }
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE}
restart: unless-stopped
environment:
MONGO_URL: ${MONGO_URL}
MONGO_OPLOG_URL: ${MONGO_OPLOG_URL}
ROOT_URL: <your URL>
PORT: ${PORT}
DEPLOY_METHOD: docker
DEPLOY_PLATFORM: ${DEPLOY_PLATFORM}
depends_on:
- mongodb
expose:
- ${PORT}
ports:
- "${BIND_IP}:${HOST_PORT}:${PORT}"
mongodb:
image: mongodb/mongodb-community-server:${MONGODB_VERSION} # changed image source
restart: unless-stopped
user: "999:992" # UID:GID defined as per mongodb community server requirement (normally 999:999, we have custom requirement)
volumes:
- /<host dir>/mongodb_data:/data/db # changed container directory as per mongodb community server
# chown -R 999:999 /<host dir>mongodb_data/
command: mongod --replSet rs0 --bind_ip_all # new requirement
environment:
# MONGODB_INITDB_ROOT_USERNAME: root # optoinal for community edition
# MONGODB_INITDB_ROOT_PASSWORD: secret # optional
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_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
# v7 environment file
# Rocket.Chat version
# see:- https://github.com/RocketChat/Rocket.Chat/releases
RELEASE=7.8.0
# MongoDB endpoint (include ?replicaSet= parameter)
MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0
# MongoDB endpoint to the local database
MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0
# IP to bind the process to
BIND_IP=<your IP>
# URL used to access your Rocket.Chat instance
ROOT_URL=<your URL>
# Port Rocket.Chat runs on (in-container)
PORT=3000
# Port on the host to bind to
HOST_PORT=3000
# Added this in response to the warning of variable not set
DEPLOY_PLATFORM=selfhosted
### MongoDB configuration
# MongoDB version/image tag
MONGODB_RELEASE=7.0
# See:- https://hub.docker.com/r/bitnami/mongodb
MONGODB_VERSION=7.0
# v8 environment file
# Rocket.Chat version
# see:- https://github.com/RocketChat/Rocket.Chat/releases
RELEASE=8.0.1
# MongoDB endpoint (include ?replicaSet= parameter)
MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0
# MongoDB endpoint to the local database
MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0
# IP to bind the process to
BIND_IP=<your IP>
# URL used to access your Rocket.Chat instance
ROOT_URL=<your URL>
# Port Rocket.Chat runs on (in-container)
PORT=3000
# Port on the host to bind to
HOST_PORT=3000
# Added this in response to the warning of variable not set
DEPLOY_PLATFORM=selfhosted
### MongoDB configuration
# MongoDB version/image tag
MONGODB_RELEASE=8.2-ubi8
# See:- https://hub.docker.com/r/mongodb/mongodb-community-server
MONGODB_VERSION=8.2-ubi8
# Pull images.
$ cd <compose dir>
$ docker compose pull
# Stop (not down). Stop preserves networks and volumes.
$ cd <compose dir>
$ docker compose stop
# remove old Rocketchat container only (part of regular Rocketchat upgrade procedure, not part of mongoDB upgrade)
$ docker rm rocketchat-rocketchat-1
rocketchat-rocketchat-1
# Set file permissions for Mongodb community server.
$ ls -lhn /<host dir>/rocketchat/
drwxrwxr-x+ 3 1001 0 4.0K Nov 12 2022 mongodb_data
$ sudo chown -R 999:992 /<host dir>/mongodb_data/
$ sudo chmod -R 755 /<host dir>>/mongodb_data/
## Configure v8.x mongodb community server ##
# Up. (note RC container will fail to connect to DB. continue with following steps to configure DB.
$ cd <compose dir>
$ docker compose up -d
# Check replica set status (should be not enable at this stage)
$ docker exec -it rocketchat-mongodb-1 mongosh --eval 'rs.status()'
MongoServerError: no replset config has been received
# enable replica and verify
$ docker exec -it rocketchat-mongodb-1 mongosh --eval 'rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "mongodb:27017" }] })'
"mongodb:27017" }] })'
{
ok: 1,
...
$ docker exec -it rocketchat-mongodb-1 mongosh --eval 'rs.status()'
...
members: [
...
stateStr: 'PRIMARY',
...
ok: 1,
# stop and re-up.
$ docker compose up -d
# confirm compatibilty version set to 8.x
$ docker exec -i rocketchat-mongodb-1 mongosh --eval "db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )"
...
featureCompatibilityVersion: { version: '8.2' },
ok: 1,
...
## Restore DB from backup ##
# Stop Rocketchat container to avoid DB conflicts/corruption.
$ docker compose stop rocketchat-rocketchat-1
# Copy DB backup dump into container and dry run restore
$ docker cp ~/backup/rocketchat-v7-20260118.raw rocketchat-mongodb-1:/tmp/full.raw # copy into container
$ docker exec rocketchat-mongodb-1 mongorestore --archive=/tmp/full.raw --dryRun --verbose | tail -20 # dry run
# Restore database
$ docker exec rocketchat-mongodb-1 mongorestore --archive=/tmp/full.raw --nsInclude=rocketchat.* --drop
...
2026-01-18T00:21:33.981+0000 19613 document(s) restored successfully. 0 document(s) failed to restore.
# Restart Rocketchat & mongoDB
$ docker compose up -d
# Confirm versions
Rocketchat GUI > admin > workspace *refresh*
Verify expected Rocketchat and MongoDB versions.
# Cleanup backup dump from within mongodb container
$ docker exec -u 0 -it rocketchat-mongodb-1 rm /tmp/full.raw