services: mysql: image: mysql:8.0 container_name: travel-mysql restart: unless-stopped command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: travel_antarkota MYSQL_USER: travel_user MYSQL_PASSWORD: travel_password volumes: - ./mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-prootpassword"] interval: 5s timeout: 5s retries: 20 app: build: . container_name: travel-app restart: unless-stopped ports: - "${HOST_PORT:-3000}:3000" environment: # Database DB_TYPE: mysql DB_HOST: mysql DB_PORT: 3306 DB_NAME: travel_antarkota DB_USERNAME: travel_user DB_PASSWORD: travel_password DATABASE_URL: "mysql://travel_user:travel_password@mysql:3306/travel_antarkota" # Security JWT_SECRET: "change-this-to-a-strong-random-secret-key-in-production" # Initial Admin Credentials (used by seed script) ADMIN_EMAIL: admin@travel.com ADMIN_PASSWORD: admin123 depends_on: mysql: condition: service_healthy