version: '3.8' services: # Database Render Application app: build: context: . dockerfile: Dockerfile ports: - "8080:8080" volumes: - ./config:/app/config - ./data:/app/data - ./logs:/app/logs environment: - CONFIG_FILE=/app/config/config.yaml depends_on: - mysql - postgres restart: unless-stopped networks: - app-network # MySQL Database mysql: image: mysql:8.0 container_name: mysql-db environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: database_render MYSQL_USER: appuser MYSQL_PASSWORD: apppassword ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql - ./config/schema.example.sql:/docker-entrypoint-initdb.d/01-schema.sql restart: unless-stopped networks: - app-network # PostgreSQL Database postgres: image: postgres:15-alpine container_name: postgres-db environment: POSTGRES_DB: database_render POSTGRES_USER: appuser POSTGRES_PASSWORD: apppassword ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data - ./config/schema.example.sql:/docker-entrypoint-initdb.d/01-schema.sql restart: unless-stopped networks: - app-network # SQLite Database (for development) sqlite-dev: image: alpine:latest container_name: sqlite-dev volumes: - ./data:/data command: tail -f /dev/null networks: - app-network volumes: mysql-data: postgres-data: networks: app-network: driver: bridge