version: '3.8' services: cmc-php-production: build: context: . dockerfile: Dockerfile platform: linux/amd64 container_name: cmc-php-production depends_on: - db-production ports: - "127.0.0.1:8093:80" # Only accessible from localhost volumes: - production_pdf_data:/var/www/cmc-sales/app/webroot/pdf - production_attachments_data:/var/www/cmc-sales/app/webroot/attachments_files restart: unless-stopped environment: - APP_ENV=production deploy: resources: limits: cpus: '2.0' memory: 2G reservations: cpus: '0.5' memory: 512M db-production: image: mariadb:latest container_name: cmc-db-production environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD_PRODUCTION} MYSQL_DATABASE: cmc MYSQL_USER: cmc MYSQL_PASSWORD: ${DB_PASSWORD_PRODUCTION} volumes: - production_db_data:/var/lib/mysql - ./backups:/backups:ro restart: unless-stopped # No external port exposure for security deploy: resources: limits: cpus: '2.0' memory: 4G reservations: cpus: '0.5' memory: 1G cmc-go-production: build: context: . dockerfile: Dockerfile.go.production container_name: cmc-go-production environment: DB_HOST: db-production DB_PORT: 3306 DB_USER: cmc DB_PASSWORD: ${DB_PASSWORD_PRODUCTION} DB_NAME: cmc PORT: 8080 APP_ENV: production depends_on: db-production: condition: service_started ports: - "127.0.0.1:8094:8080" # Only accessible from localhost volumes: - production_pdf_data:/root/webroot/pdf - ./credentials/production:/root/credentials:ro restart: unless-stopped deploy: resources: limits: cpus: '2.0' memory: 2G reservations: cpus: '0.5' memory: 512M volumes: production_db_data: production_pdf_data: production_attachments_data: