Files
php-container/docker-compose.yml
T

71 lines
1.5 KiB
YAML

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