version: '3.9' services: app: build: . container_name: starterkit-app restart: unless-stopped ports: - "8080:8080" environment: SPRING_PROFILES_ACTIVE: prod DB_HOST: mysql DB_PORT: 3306 DB_NAME: ${DB_NAME:-starterkit} DB_USERNAME: ${DB_USERNAME:-starterkit} DB_PASSWORD: ${DB_PASSWORD} JWT_SECRET: ${JWT_SECRET} CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-http://localhost:3000} depends_on: mysql: condition: service_healthy networks: - starterkit-net mysql: image: mysql:8.0 container_name: starterkit-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: ${DB_NAME:-starterkit} MYSQL_USER: ${DB_USERNAME:-starterkit} MYSQL_PASSWORD: ${DB_PASSWORD} volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"] interval: 10s timeout: 5s retries: 5 networks: - starterkit-net nginx: image: nginx:alpine container_name: starterkit-nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./docker/ssl:/etc/nginx/ssl:ro depends_on: - app networks: - starterkit-net volumes: mysql_data: networks: starterkit-net: driver: bridge