66 lines
No EOL
1.8 KiB
YAML
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: |