Files
Docker_Compose/480T/rc/compose.yml
T
2026-07-26 02:17:37 +08:00

65 lines
2.4 KiB
YAML

services:
rocketchat:
image: ${IMAGE:-registry.rocket.chat/rocketchat/rocket.chat}:${RELEASE:-8.0.1}
restart: always
labels:
prometheus.io/scrape: "true"
prometheus.io/port: ${METRICS_PORT:-9458}
container_tag: "${COMPOSE_PROJECT_NAME:-rocketchat}#rocketchat"
environment:
ROOT_URL: ${ROOT_URL:-http://localhost}
PORT: ${PORT:-9980}
DEPLOY_METHOD: docker
DEPLOY_PLATFORM: compose
REG_TOKEN: ${REG_TOKEN:-}
LICENSE_DEBUG: true
OVERWRITE_SETTING_Prometheus_Enabled: true
OVERWRITE_SETTING_Prometheus_Port: "${METRICS_PORT:-9458}"
MONGO_URL: ${MONGO_URL:-mongodb://mongodb:27017/rocketchat?replicaSet=rs0}
TRANSPORTER: "${NATS_URL-monolith+nats://nats:4222}"
INSTANCE_IP: "${INSTANCE_IP:-}"
# depends_on:
# mongodb-init-container:
# condition: service_completed_successfully
entrypoint: sh
command:
- -c
- |
protocol=$(echo $$MONGO_URL | awk -F'://' '{print $$1}')
if [ "$$protocol" = "mongodb+srv" ]; then
echo "=====> MongoDB is using SRV protocol, skipping healthcheck before attempting to start rocket.chat ...";
exec node main.js;
fi
host_port=$(echo $$MONGO_URL | awk -F/ '{print $$3}')
if echo $$host_port | grep -q @; then
host_port=$(echo $$host_port | awk -F@ '{print $$2}')
fi
echo "=====> host_port: $$host_port";
host=$${host_port%%:*}
port=$${host_port##*:}
port=$${port:-27017}
echo "=====> Waiting for MongoDB ($$host:$$port) to be ready before starting Rocket.Chat...";
for i in $(seq 1 60); do
if nc -z $$host $$port >/dev/null 2>&1; then
echo "=====> MongoDB is up - starting Rocket.Chat";
exec node main.js;
fi;
echo "=====> MongoDB not ready yet, retrying in 5 seconds...";
sleep 5;
done;
echo "=====> Giving up waiting for MongoDB after 5 minutes";
exit 1
expose:
- ${PORT:-3000}
- ${METRICS_PORT:-9458}
ports:
- "${BIND_IP:-0.0.0.0}:${HOST_PORT:-3000}:${PORT:-3000}"
- "${BIND_IP:-0.0.0.0}:${METRICS_PORT:-9458}:${METRICS_PORT:-9458}"
logging:
driver: "json-file"
# healthcheck:
# test: ["CMD", "nc", "-zv", "-w", "10", "rocketchat", "${PORT:-3000}"]
# interval: 30s
# timeout: 10s
# retries: 10
# start_period: 30s