version: "3.9" services: database: image: mariadb:11.4-jammy container_name: consumer_api_db restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root_password} MARIADB_DATABASE: ${DB_NAME:-consumer_db} MARIADB_USER: ${DB_USER:-consumer_user} MARIADB_PASSWORD: ${DB_PASSWORD:-consumer_password} MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: "false" ports: - "${DB_PORT:-3306}:3306" volumes: - mariadb_data:/var/lib/mysql - ./prisma/migrations:/docker-entrypoint-initdb.d healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 5 networks: - consumer_network api: build: context: . dockerfile: Dockerfile container_name: consumer_api restart: unless-stopped depends_on: database: condition: service_healthy environment: NODE_ENV: ${NODE_ENV:-production} PORT: ${PORT:-5002} DATABASE_URL: mysql://${DB_USER:-consumer_user}:${DB_PASSWORD:-consumer_password}@database:3306/${DB_NAME:-consumer_db} SHADOW_DATABASE_URL: mysql://${DB_USER:-consumer_user}:${DB_PASSWORD:-consumer_password}@database:3306/${DB_NAME:-consumer_db}_shadow JWT_SECRET: ${JWT_SECRET:-your_jwt_secret_key_change_in_production} JWT_EXPIRATION: ${JWT_EXPIRATION:-604800} CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:5000,http://127.0.0.1:5000} ports: - "${PORT:-5002}:5002" volumes: - ./src:/app/src - /app/dist - /app/node_modules networks: - consumer_network healthcheck: test: [ "CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5002/api/v1/health", ] interval: 30s timeout: 10s retries: 3 start_period: 10s volumes: mariadb_data: driver: local networks: consumer_network: driver: bridge