version: '3.
8'
services:
# MongoDB Database
mongodb:
image: mongo:7.0
container_name: drakonarium-mongodb
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password123
MONGO_INITDB_DATABASE: drakonarium
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
- ./server/scripts/[Link]:/docker-entrypoint-initdb.d/[Link]:ro
networks:
- drakonarium-network
# Redis for session storage and caching
redis:
image: redis:7.2-alpine
container_name: drakonarium-redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- drakonarium-network
# Backend API Server
api:
build:
context: ./server
dockerfile: Dockerfile
container_name: drakonarium-api
restart: unless-stopped
environment:
NODE_ENV: production
PORT: 5000
MONGODB_URI: mongodb://admin:password123@mongodb:27017/drakonarium?
authSource=admin
REDIS_URL: redis://redis:6379
JWT_SECRET: your-super-secret-jwt-key-change-in-production
CLIENT_URL: [Link]
ports:
- "5000:5000"
depends_on:
- mongodb
- redis
volumes:
- ./server/logs:/app/logs
- ./server/uploads:/app/uploads
networks:
- drakonarium-network
# Frontend Client
client:
build:
context: ./client
dockerfile: Dockerfile
container_name: drakonarium-client
restart: unless-stopped
ports:
- "3000:80"
depends_on:
- api
networks:
- drakonarium-network
# Nginx Reverse Proxy
nginx:
image: nginx:alpine
container_name: drakonarium-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/[Link]:/etc/nginx/[Link]:ro
- ./nginx/ssl:/etc/nginx/ssl:ro
depends_on:
- client
- api
networks:
- drakonarium-network
volumes:
mongodb_data:
redis_data:
networks:
drakonarium-network:
driver: bridge