services: app: build: context: . dockerfile: Dockerfile restart: unless-stopped expose: - "80" environment: DB_HOST: "${DB_HOST:-db}" DB_NAME: "${DB_NAME:-webgis_jalan}" DB_USER: "${DB_USER:-webgis}" DB_PASS: "${DB_PASS:?Set DB_PASS in Coolify}" volumes: - uploads-data:/var/www/html/uploads depends_on: db: condition: service_healthy healthcheck: test: ["CMD-SHELL", "curl -fsS http://127.0.0.1/ >/dev/null || exit 1"] interval: 30s timeout: 5s retries: 3 start_period: 30s db: image: mysql:8.0 restart: unless-stopped environment: MYSQL_DATABASE: "${DB_NAME:-webgis_jalan}" MYSQL_USER: "${DB_USER:-webgis}" MYSQL_PASSWORD: "${DB_PASS:?Set DB_PASS in Coolify}" MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD:?Set DB_ROOT_PASSWORD in Coolify}" volumes: - mysql-data:/var/lib/mysql - ./schema.sql:/docker-entrypoint-initdb.d/schema.sql:ro healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h localhost -uroot -p\"$${MYSQL_ROOT_PASSWORD}\" --silent"] interval: 5s timeout: 5s retries: 20 start_period: 30s volumes: mysql-data: uploads-data: