trip-planner/docker-compose.prod.yml
2025-11-16 15:53:52 +01:00

66 lines
No EOL
1.8 KiB
YAML

version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile.prod
container_name: trip-planner-production
ports:
- "${APP_PORT:-8080}:80"
environment:
# Laravel Application
APP_NAME: "Trip Planner"
APP_ENV: production
APP_DEBUG: false
APP_KEY: ${APP_KEY}
APP_URL: ${APP_URL:-http://localhost:8080}
# Database (internal MariaDB)
DB_CONNECTION: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_DATABASE: ${DB_DATABASE:-trip_planner}
DB_USERNAME: ${DB_USERNAME:-trip_user}
DB_PASSWORD: ${DB_PASSWORD:?DB_PASSWORD must be set}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?MYSQL_ROOT_PASSWORD must be set}
# Redis (internal)
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
REDIS_PASSWORD: null
# Cache & Session
CACHE_DRIVER: redis
QUEUE_CONNECTION: redis
SESSION_DRIVER: redis
SESSION_LIFETIME: 120
# Mail (configure as needed)
MAIL_MAILER: ${MAIL_MAILER:-log}
MAIL_HOST: ${MAIL_HOST:-}
MAIL_PORT: ${MAIL_PORT:-}
MAIL_USERNAME: ${MAIL_USERNAME:-}
MAIL_PASSWORD: ${MAIL_PASSWORD:-}
MAIL_ENCRYPTION: ${MAIL_ENCRYPTION:-}
MAIL_FROM_ADDRESS: ${MAIL_FROM_ADDRESS:-noreply@tripplanner.local}
MAIL_FROM_NAME: "${MAIL_FROM_NAME:-Trip Planner}"
volumes:
# Persistent data for database
- db-data:/var/lib/mysql
# Persistent data for redis
- redis-data:/data/redis
# Persistent storage for uploaded files
- storage-data:/var/www/html/storage/app
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/up"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
volumes:
db-data:
redis-data:
storage-data: