# Copy this file to `docker-compose.yml` and modify it to your liking. # Copy `.env.example` to `.env` to configure environment variables. version: "3.1" services: bot: build: context: . dockerfile: ./bot/Dockerfile environment: - DB_HOST=mongo:27017 - DB_USERNAME=mogus - DB_PASS - DB_NAME=admin - BOT_TOKEN - BOT_OWNERS - LOG_WEBHOOK - NODE_ENV=production - API_WS_URL=ws://api:9000/internal/ws - API_WS_TOKEN=${INTERNAL_API_TOKEN} - WEB_UI_URL=${PUBLIC_WEB_URL} - BOT_PREFIX - BOT_METRICS_PORT - BOT_METRICS_MSG_PING_CHANNEL - BOT_STATUS - BOT_STATUS_INTERVAL - API_URL # Uncomment if you enabled Prometheus metrics #ports: # - 127.0.0.1:${BOT_METRICS_PORT}:${BOT_METRICS_PORT} depends_on: - mongo - api restart: unless-stopped api: build: context: . dockerfile: ./api/Dockerfile environment: - BOT_API_TOKEN=${INTERNAL_API_TOKEN} - DB_HOST=mongo:27017 - DB_USERNAME=mogus - DB_PASS - DB_NAME=admin - REDIS_URL expose: - 9000 ports: - 0.0.0.0:9000:9000 restart: unless-stopped bridge: build: context: . dockerfile: ./bridge/Dockerfile environment: - REVOLT_TOKEN=${BOT_TOKEN} - DISCORD_TOKEN=${BOT_TOKEN_DISCORD} - DB_STRING=mongodb://mogus:${DB_PASS}@mongo:27017/admin - NODE_ENV=production - BRIDGE_METRICS_PORT - REVOLT_API_URL=${API_URL} - EMOJI_SERVERS=${BRIDGE_EMOJI_SERVERS} # Uncomment if you enabled Prometheus metrics #ports: # - 127.0.0.1:${BRIDGE_METRICS_PORT}:${BRIDGE_METRICS_PORT} restart: unless-stopped depends_on: - mongo # If you prefer to host the web app on a different # platform like Vercel, you can remove this part. web: build: context: . dockerfile: ./web/Dockerfile args: - VITE_API_URL=${PUBLIC_API_URL} - VITE_BOT_PREFIX=${BOT_PREFIX} ports: - 0.0.0.0:8080:80 restart: unless-stopped mongo: image: mongo environment: - MONGO_INITDB_ROOT_USERNAME=mogus - MONGO_INITDB_ROOT_PASSWORD=${DB_PASS} expose: - 27017 # If you want to access the database from outside #ports: # - "0.0.0.0:36602:27017" volumes: - ./db:/data/db:rw restart: unless-stopped redis: image: eqalpha/keydb restart: always