139 lines
3.7 KiB
YAML
139 lines
3.7 KiB
YAML
services:
|
|
starter-api:
|
|
image: gitea.leonmorival.com/daily_meal/bemeal-api:latest
|
|
container_name: bemeal-api
|
|
restart: unless-stopped
|
|
depends_on:
|
|
pgsql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
meilisearch:
|
|
condition: service_started
|
|
# ports: <--- Supprimé pour la sécurité, NPM s'en occupe
|
|
# - "8002:80"
|
|
environment:
|
|
APP_LOCALE: "fr"
|
|
APP_ENV: "production"
|
|
APP_KEY: "${APP_KEY}"
|
|
APP_URL: "${APP_URL}"
|
|
SERVER_NAME: ":80"
|
|
APP_RUNTIME: "Laravel\\FrankenPHP\\Runtime" # <-- AJOUTÉ pour FrankenPHP
|
|
APP_DEBUG: "${APP_DEBUG}"
|
|
FILESYSTEM_DISK: "public"
|
|
DB_CONNECTION: "pgsql"
|
|
DB_HOST: "pgsql"
|
|
DB_PORT: 5432
|
|
DB_DATABASE: "${DB_DATABASE:?DB_DATABASE is required}"
|
|
DB_USERNAME: "${DB_USERNAME:?DB_USERNAME is required}"
|
|
DB_PASSWORD: "${DB_PASSWORD:?DB_PASSWORD is required}"
|
|
REDIS_HOST: "redis"
|
|
REDIS_CLIENT: "predis"
|
|
QUEUE_CONNECTION: "redis"
|
|
SCOUT_DRIVER: "meilisearch"
|
|
MEILISEARCH_HOST: "http://meilisearch:7700"
|
|
MEILISEARCH_KEY: "${MEILISEARCH_KEY}"
|
|
volumes:
|
|
- storage-data:/var/www/html/storage/app
|
|
- storage-public-data:/var/www/html/storage/app/public
|
|
networks:
|
|
- nginx-bemeal
|
|
- internal
|
|
|
|
pgsql:
|
|
image: postgres:15-alpine
|
|
container_name: bemeal-pgsql
|
|
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:
|
|
- pgsql-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready -h 127.0.0.1 -p 5432" ]
|
|
start_period: 30s
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
networks:
|
|
- internal
|
|
|
|
redis:
|
|
image: redis:alpine
|
|
container_name: bemeal-redis
|
|
restart: unless-stopped
|
|
volumes:
|
|
- redis-data:/data
|
|
networks:
|
|
- internal
|
|
|
|
horizon:
|
|
image: gitea.leonmorival.com/daily_meal/bemeal-api:latest
|
|
container_name: bemeal-horizon
|
|
restart: unless-stopped
|
|
depends_on:
|
|
pgsql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
environment:
|
|
APP_ENV: "production"
|
|
APP_KEY: "${APP_KEY}"
|
|
DB_CONNECTION: "pgsql"
|
|
DB_HOST: "pgsql"
|
|
DB_PORT: 5432
|
|
DB_DATABASE: "${DB_DATABASE:?DB_DATABASE is required}"
|
|
DB_USERNAME: "${DB_USERNAME:?DB_USERNAME is required}"
|
|
DB_PASSWORD: "${DB_PASSWORD:?DB_PASSWORD is required}"
|
|
REDIS_HOST: "redis"
|
|
REDIS_CLIENT: "predis"
|
|
QUEUE_CONNECTION: "redis"
|
|
volumes:
|
|
- storage-data:/var/www/html/storage/app
|
|
command: "php artisan horizon"
|
|
networks:
|
|
- internal
|
|
|
|
adminer:
|
|
image: adminer:latest
|
|
container_name: bemeal-adminer
|
|
restart: unless-stopped
|
|
environment:
|
|
# Optionnel : définit PostgreSQL par défaut à la connexion
|
|
ADMINER_DEFAULT_SERVER: pgsql
|
|
networks:
|
|
- internal
|
|
# - nginx
|
|
meilisearch:
|
|
image: getmeili/meilisearch:latest
|
|
container_name: bemeal-meilisearch
|
|
restart: unless-stopped
|
|
environment:
|
|
MEILI_NO_ANALYTICS: "true"
|
|
MEILI_MASTER_KEY: "${MEILISEARCH_KEY}"
|
|
volumes:
|
|
- meilisearch-data:/meili_data
|
|
networks:
|
|
- internal
|
|
# - nginx
|
|
|
|
volumes:
|
|
pgsql-data:
|
|
external: true
|
|
name: bemeal_pgsql_data
|
|
redis-data:
|
|
name: bemeal_redis_data
|
|
storage-data:
|
|
name: bemeal_storage_data
|
|
storage-public-data:
|
|
name: bemeal_storage_public_data
|
|
meilisearch-data:
|
|
name: bemeal_meilisearch_data
|
|
|
|
networks:
|
|
nginx-bemeal:
|
|
external: true
|
|
internal:
|
|
driver: bridge
|