bash DevOps

Docker Compose Full Stack

Production-ready Docker Compose configuration for a Node.js app with MongoDB, Redis, Nginx reverse proxy, and monitoring.

Apex Logic 0 copies
bash
# docker-compose.yml - Full Stack Production Setup
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
      target: production
    restart: unless-stopped
    environment:
      NODE_ENV: production
      MONGO_URI: mongodb://mongo:27017/myapp
      REDIS_URL: redis://redis:6379
      PORT: 3000
    depends_on:
      mongo:
        condition: service_healthy
      redis:
        condition: service_healthy
    networks:
      - backend
    deploy:
      replicas: 2
      resources:
        limits:
          memory: 512M
          cpus: '0.5'

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/ssl:/etc/nginx/ssl:ro
      - ./public:/var/www/public:ro
    depends_on:
      - app
    restart: unless-stopped
    networks:
      - backend

  mongo:
    image: mongo:7
    restart: unless-stopped
    volumes:
      - mongo_data:/data/db
      - ./backups:/backups
    environment:
      MONGO_INITDB_DATABASE: myapp
    healthcheck:
      test: mongosh --eval "db.adminCommand('ping')"
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - backend

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    command: redis-server --appendonly yes --maxmemory 128mb --maxmemory-policy allkeys-lru
    volumes:
      - redis_data:/data
    healthcheck:
      test: redis-cli ping
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - backend

volumes:
  mongo_data:
  redis_data:

networks:
  backend:
    driver: bridge

Tags

docker-compose nginx mongodb redis

Related Snippets

bash

Docker Cleanup Script

bash

SSL Certificate Auto-Renewal

bash

MongoDB Backup Script

bash

PM2 Deployment Script