api/docker-compose.prod.yml

138 lines
3.5 KiB
YAML

services:
starter-api:
image: gitea.leonmorival.com/leon-morival/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_USERNAME: "${DB_USERNAME}"
DB_PASSWORD: "${DB_PASSWORD}"
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}"
POSTGRES_USER: "${DB_USERNAME}"
POSTGRES_PASSWORD: "${DB_PASSWORD}"
volumes:
- pgsql-data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${DB_USERNAME} -d ${DB_DATABASE}" ]
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/leon-morival/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_USERNAME: "${DB_USERNAME}"
DB_PASSWORD: "${DB_PASSWORD}"
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