|
docker-compose.yml代码如下
services:
# 构建 Rocket.Chat
rocketchat-builder:
build:
context: .
dockerfile: ./rocketchat-builder/Dockerfile
container_name: rocketchat-builder
volumes:
- ./rocketchat-builder/scripts:/scripts
- ./rocketchat-src:/app
- ./rocketchat-build:/build
working_dir: /app
networks:
- rocketchat_net
environment:
- NODE_ENV=production
command: ["bash", "/usr/local/bin/build-rocketchat.sh"]
# MongoDB 服务
mongodb:
image: mongo:6.0
container_name: mongodb
restart: always
volumes:
- ./data/mongo:/data/db
- ./data/log:/var/log/mongodb
- ./data/mongodb-keyfile:/opt/mongo-keyfile
environment:
MONGO_INITDB_ROOT_USERNAME: rocketchat
MONGO_INITDB_ROOT_PASSWORD: f78gwiN4ZZIC9k
command: >
mongod
--replSet rs0
--keyFile /opt/mongo-keyfile
--auth
--bind_ip_all
networks:
- rocketchat_net
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet | grep 1
interval: 10s
timeout: 10s
retries: 10
mongo-init:
image: mongo:6.0
container_name: mongo-init
depends_on:
mongodb:
condition: service_healthy
restart: "no"
environment:
MONGO_INITDB_ROOT_USERNAME: rocketchat
MONGO_INITDB_ROOT_PASSWORD: f78gwiN4ZZIC9k
entrypoint: >
sh -c "
echo '等待 MongoDB 启动...';
until mongosh --host mongodb -u rocketchat -p f78gwiN4ZZIC9k --authenticationDatabase admin --eval 'db.runCommand({ ping: 1 })' >/dev/null 2>&1; do
sleep 5;
done;
echo '初始化 MongoDB 复制集...';
mongosh --host mongodb -u rocketchat -p f78gwiN4ZZIC9k --authenticationDatabase admin --eval '
try {
rs.initiate({
_id: \"rs0\",
members: [ { _id: 0, host: \"mongodb:27017\" } ]
});
} catch (e) { print(e); }
';
echo '创建 rocketchat 用户...';
mongosh --host mongodb -u rocketchat -p f78gwiN4ZZIC9k --authenticationDatabase admin --eval '
try {
const dbname = "rocketchat";
const username = "rocketchat";
const db = db.getSiblingDB(dbname);
const user = db.getUser(username);
if (!user) {
print("用户不存在,正在创建...");
db.createUser({
user: username,
pwd: "'f78gwiN4ZZIC9k'",
roles: [
{ role: "readWrite", db: dbname },
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
});
} else {
print("用户已存在,跳过创建。");
}
} catch (err) {
print("创建用户时出错:", err);
}
';
"
networks:
- rocketchat_net
# Rocket.Chat 服务
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:7.5.1
container_name: rocketchat
restart: always
depends_on:
mongodb:
condition: service_healthy
environment:
MONGO_URL: "mongodb://rocketchat:f78gwiN4ZZIC9k@mongodb:27017/rocketchat?replicaSet=rs0&authSource=admin"
MONGO_OPLOG_URL: "mongodb://rocketchat:f78gwiN4ZZIC9k@mongodb:27017/local?replicaSet=rs0&authSource=admin"
ROOT_URL: https://chat.chaoren.group
PORT: 3000
APP_ID: rocketchat
APP_SECRET: secret_key
LOGIN_URL: https://chat.chaoren.group
networks:
- rocketchat_net
ports:
- "3000:3000"
# Redis 服务
redis:
image: redis:6
container_name: redis
restart: always
networks:
- rocketchat_net
networks:
rocketchat_net:
name: rocketchat_net
driver: bridge
|
|