version: '3.8' services: # MariaDB Database mariadb: image: mariadb:11 container_name: geofeed-db restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-geofeed_root_secret} MARIADB_DATABASE: ${DB_NAME:-geofeed_manager} MARIADB_USER: ${DB_USER:-geofeed} MARIADB_PASSWORD: ${DB_PASSWORD:-geofeed_secret} volumes: - mariadb_data:/var/lib/mysql - ./database/schema.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro ports: - "${DB_PORT:-3306}:3306" networks: - geofeed-network healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 5 start_period: 30s # PHP Application webapp: build: context: . dockerfile: Dockerfile container_name: geofeed-webapp restart: unless-stopped environment: DB_HOST: mariadb DB_NAME: ${DB_NAME:-geofeed_manager} DB_USER: ${DB_USER:-geofeed} DB_PASS: ${DB_PASSWORD:-geofeed_secret} ports: - "${WEB_PORT:-8080}:80" depends_on: mariadb: condition: service_healthy networks: - geofeed-network # Optional: phpMyAdmin for database management phpmyadmin: image: phpmyadmin:latest container_name: geofeed-phpmyadmin restart: unless-stopped environment: PMA_HOST: mariadb PMA_USER: ${DB_USER:-geofeed} PMA_PASSWORD: ${DB_PASSWORD:-geofeed_secret} UPLOAD_LIMIT: 64M ports: - "${PMA_PORT:-8081}:80" depends_on: mariadb: condition: service_healthy networks: - geofeed-network profiles: - admin volumes: mariadb_data: driver: local networks: geofeed-network: driver: bridge