services: backend: build: context: ./backend container_name: theplug-backend restart: unless-stopped env_file: - path: ./backend/.env required: false environment: MONGODB_URI: mongodb://${MONGO_USER:-theplug}:${MONGO_INITDB_ROOT_PASSWORD:-theplug_dev_password}@mongodb:27017/${MONGO_DB:-theplug}?authSource=admin MONGODB_DB_NAME: ${MONGO_DB:-theplug} REDIS_URL: redis://redis:6379 ports: - "${API_PORT:-3671}:3671" depends_on: mongodb: condition: service_healthy redis: condition: service_healthy frontend: build: context: ./frontend container_name: theplug-frontend restart: unless-stopped ports: - "${FRONTEND_PORT:-5173}:80" depends_on: - backend mongodb: image: mongo:8.2 container_name: theplug-mongodb restart: unless-stopped environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER:-theplug} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD:-theplug_dev_password} MONGO_INITDB_DATABASE: ${MONGO_DB:-theplug} ports: - "27017:27017" volumes: - theplug_mongodb:/data/db healthcheck: test: ["CMD-SHELL", "mongosh --quiet --username ${MONGO_USER:-theplug} --password ${MONGO_INITDB_ROOT_PASSWORD:-theplug_dev_password} --authenticationDatabase admin --eval \"db.adminCommand({ ping: 1 }).ok\" | grep 1"] interval: 10s timeout: 5s retries: 5 start_period: 10s redis: image: redis:8-alpine container_name: theplug-redis restart: unless-stopped command: ["redis-server", "--appendonly", "yes"] ports: - "6379:6379" volumes: - theplug_redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 5s volumes: theplug_mongodb: theplug_redis: