Files
daily-meal-api/docker-compose.prod.yml
T
leonm 99cb0e63e6
CI / 🧪 Tests Laravel (push) Successful in 2m2s
CI / 🐳 Build & Push Image (push) Successful in 21s
feat: build assets
2026-07-16 17:05:00 +02:00

152 lines
3.4 KiB
YAML

name: daily-meal-api
x-app-image: &app-image git.leonmorival.xyz/leonm/daily-meal-api:${IMAGE_TAG:-latest}
x-app-environment: &app-environment
APP_ENV: production
APP_DEBUG: "false"
OCTANE_SERVER: frankenphp
OCTANE_PORT: "80"
OCTANE_ADMIN_PORT: "2019"
OCTANE_MAX_REQUESTS: "500"
DB_CONNECTION: pgsql
DB_HOST: postgres
DB_PORT: "5432"
REDIS_HOST: redis
REDIS_CLIENT: predis
QUEUE_CONNECTION: redis
SCOUT_DRIVER: meilisearch
MEILISEARCH_HOST: http://meilisearch:7700
x-app-volumes: &app-volumes
- storage-data:/app/storage/app
- storage-public-data:/app/storage/app/public
x-app-service: &app-service
image: *app-image
restart: unless-stopped
env_file:
- .env
environment: *app-environment
volumes: *app-volumes
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
meilisearch:
condition: service_started
networks:
- internal
services:
app:
<<: *app-service
container_name: daily-meal-api
networks:
- proxy
- internal
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1/api/health >/dev/null 2>&1"]
start_period: 30s
interval: 10s
timeout: 5s
retries: 12
horizon:
<<: *app-service
container_name: daily-meal-api-horizon
healthcheck:
disable: true
depends_on:
app:
condition: service_healthy
command: ["php", "artisan", "horizon"]
scheduler:
<<: *app-service
container_name: daily-meal-api-scheduler
healthcheck:
disable: true
depends_on:
app:
condition: service_healthy
command: ["php", "artisan", "schedule:work"]
postgres:
image: postgres:15-alpine
container_name: daily-meal-api-postgres
restart: unless-stopped
environment:
POSTGRES_DB: "${DB_DATABASE:?DB_DATABASE is required}"
POSTGRES_USER: "${DB_USERNAME:?DB_USERNAME is required}"
POSTGRES_PASSWORD: "${DB_PASSWORD:?DB_PASSWORD is required}"
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -p 5432 -U $$POSTGRES_USER -d $$POSTGRES_DB"]
start_period: 30s
interval: 5s
timeout: 5s
retries: 10
networks:
- internal
redis:
image: redis:alpine
container_name: daily-meal-api-redis
restart: unless-stopped
volumes:
- redis-data:/data
networks:
- internal
meilisearch:
image: getmeili/meilisearch:latest
container_name: daily-meal-api-meilisearch
restart: unless-stopped
environment:
MEILI_NO_ANALYTICS: "true"
MEILI_MASTER_KEY: "${MEILISEARCH_KEY:?MEILISEARCH_KEY is required}"
volumes:
- meilisearch-data:/meili_data
networks:
- internal
adminer:
image: adminer:latest
container_name: daily-meal-api-adminer
restart: unless-stopped
profiles:
- debug
ports:
- "127.0.0.1:${ADMINER_PORT:-8080}:8080"
environment:
ADMINER_DEFAULT_SERVER: postgres
networks:
- internal
volumes:
postgres-data:
external: true
name: bemeal_pgsql_data
redis-data:
name: bemeal_redis_data
meilisearch-data:
name: bemeal_meilisearch_data
storage-data:
name: bemeal_storage_data
storage-public-data:
name: bemeal_storage_public_data
networks:
proxy:
external: true
internal:
driver: bridge