services: php: build: context: . dockerfile: Dockerfile target: ${FRAMEWORK} args: # args from .env file PHP_VERSION: ${PHP_VERSION} MODE: ${MODE} restart: unless-stopped networks: - app-network environment: # proxy,local mode CADDY_TLS_INTERNAL: 0 SERVER_NAME: ":${PORT}" # production mode # SERVER_NAME: ${SERVER_NAME} # FRANKENPHP_HTTP2: 1 # FRANKENPHP_HTTP3: 1 ports: # proxy,local mode - "${PORT}:${PORT}" # HTTP # production mode # - "443:443" # HTTPS # - "443:443/udp" # HTTP/3 volumes: - ./php.ini:/usr/local/etc/php/php.ini:ro - caddy_data:/data - caddy_config:/config # opencart,wordpress - ./www:/app/public # laravel,symfony # - ./www:/app db: image: mariadb restart: unless-stopped networks: - app-network environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER_DATABASE} MYSQL_PASSWORD: ${MYSQL_PASSWORD_DATABASE} volumes: - db_data:/var/lib/mysql redis: image: redis:alpine restart: unless-stopped volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] labels: glance.parent: redis glance.name: Redis # Volumes needed for Caddy certificates and configuration volumes: caddy_data: caddy_config: db_data: redis_data: networks: app-network: driver: bridge