Ctrl K
ComunidadGuías…

docker-compose.prod.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
services:
  # Public website served via nginx
  website:
    image: nginx:1.28-alpine
    container_name: way-cms-website
    ports:
      - "8080:80"
    volumes:
      - ${WEBSITE_DIR:-./website}:/usr/share/nginx/html:ro
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
    restart: unless-stopped
    networks:
      - way-cms-network

  # CMS admin interface - using Docker Hub image
  # Note: Set DOCKER_USERNAME env var or replace 'drumsergio' with your Docker Hub username
  # Set CMS_VERSION env var to use another version (defaults to 2.0.23)
  # Image tags have no "v" prefix. Example: CMS_VERSION=2.0.20
  cms:
    image: ${DOCKER_USERNAME:-drumsergio}/way-cms:${CMS_VERSION:-2.0.23}
    container_name: way-cms-admin
    ports:
      - "5001:5000"
    volumes:
      # Single-tenant: website files
      - ${WEBSITE_DIR:-./website}:/var/www/html:rw
      # Backups directory
      - ./.way-cms-backups:/.way-cms-backups
      # Multi-tenant: SQLite database and settings
      - ./.way-cms-data:/.way-cms-data
      # Multi-tenant: all projects (only used when MULTI_TENANT=true)
      - ${PROJECTS_DIR:-./projects}:/var/www/projects:rw
    environment:
      # ============== Single-Tenant Mode (Default) ==============
      # Base directory for website files
      - CMS_BASE_DIR=/var/www/html
      
      # Authentication (use either CMS_PASSWORD or CMS_PASSWORD_HASH)
      - CMS_USERNAME=${CMS_USERNAME:-admin}
      - CMS_PASSWORD=${CMS_PASSWORD:-admin}
      - CMS_PASSWORD_HASH=${CMS_PASSWORD_HASH:-}
      
      # ============== Multi-Tenant Mode ==============
      # Set MULTI_TENANT=true to enable multi-tenant mode
      - MULTI_TENANT=${MULTI_TENANT:-false}
      
      # Multi-tenant directories (only used when MULTI_TENANT=true)
      - DATA_DIR=${DATA_DIR:-/.way-cms-data}
      - PROJECTS_BASE_DIR=${PROJECTS_BASE_DIR:-/var/www/projects}
      
      # Initial admin user (required for first run in multi-tenant mode)
      - ADMIN_EMAIL=${ADMIN_EMAIL:-}
      - ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
      
      # Email configuration for magic links (multi-tenant)
      - SMTP_HOST=${SMTP_HOST:-}
      - SMTP_PORT=${SMTP_PORT:-587}
      - SMTP_USER=${SMTP_USER:-}
      - SMTP_PASSWORD=${SMTP_PASSWORD:-}
      - SMTP_FROM=${SMTP_FROM:-}
      - SMTP_FROM_NAME=${SMTP_FROM_NAME:-Way-CMS}
      - SMTP_USE_TLS=${SMTP_USE_TLS:-true}
      - MAGIC_LINK_EXPIRY_HOURS=${MAGIC_LINK_EXPIRY_HOURS:-24}
      - APP_URL=${APP_URL:-http://localhost:5001}
      
      # ============== Common Settings ==============
      # Security
      - SECRET_KEY=${SECRET_KEY:-change-me-in-production-please}
      - READ_ONLY_MODE=${READ_ONLY_MODE:-false}
      
      # Session configuration (in minutes, default 24 hours)
      - SESSION_TIMEOUT_MINUTES=${SESSION_TIMEOUT_MINUTES:-1440}
      
      # Website display settings (single-tenant only)
      - WEBSITE_URL=${WEBSITE_URL:-}
      - WEBSITE_NAME=${WEBSITE_NAME:-}
      
      # Automatic backups (enabled by default)
      - AUTO_BACKUP_ENABLED=${AUTO_BACKUP_ENABLED:-true}
      
      # Flask configuration
      - PORT=5000
      - FLASK_APP=app.py
    restart: unless-stopped
    networks:
      - way-cms-network
    depends_on:
      - website

networks:
  way-cms-network:
    driver: bridge

volumes:
  website-data:
    driver: local