version: '3.8' services: backend: build: context: support-portal-backend dockerfile: Dockerfile restart: always ports: - "8080:8080" environment: MYSQL_HOST: db MYSQL_USER: support_portal_user MYSQL_PASSWORD: support_portal_password MYSQL_DATABASE: support-portal # ✅ Activate production profile and enforce HTTPS base URL SPRING_PROFILES_ACTIVE: production APP_BASE_URL: https://cmcbackend.rootxwire.com # ✅ Optional: ensures Spring detects HTTPS correctly behind reverse proxy SERVER_FORWARD_HEADERS_STRATEGY: native volumes: # Persist uploaded images and files - blog-uploads:/app/uploads networks: - angular-spring - spring-mysql depends_on: db: condition: service_healthy db: image: mysql:8.0.19 restart: always environment: MYSQL_USER: support_portal_user MYSQL_PASSWORD: support_portal_password MYSQL_DATABASE: support-portal MYSQL_ROOT_PASSWORD: root_password healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"] interval: 3s retries: 5 start_period: 30s volumes: - db-data:/var/lib/mysql networks: - spring-mysql frontend: build: context: support-portal-frontend dockerfile: Dockerfile restart: always ports: - "8072:80" networks: - angular-spring depends_on: - backend volumes: db-data: {} blog-uploads: {} networks: angular-spring: {} spring-mysql: {}