services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: stripstream POSTGRES_USER: stripstream POSTGRES_PASSWORD: stripstream ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U stripstream -d stripstream"] interval: 10s timeout: 5s retries: 5 meilisearch: image: getmeili/meilisearch:v1.12 env_file: - ../.env ports: - "7700:7700" volumes: - meili_data:/meili_data healthcheck: test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:7700/health"] interval: 10s timeout: 5s retries: 5 migrate: image: postgres:16-alpine depends_on: postgres: condition: service_healthy volumes: - ./migrations:/migrations:ro command: [ "sh", "-c", "PGPASSWORD=stripstream psql -h postgres -U stripstream -d stripstream -f /migrations/0001_init.sql", ] api: build: context: .. dockerfile: apps/api/Dockerfile env_file: - ../.env ports: - "8080:8080" volumes: - ../libraries:/libraries depends_on: migrate: condition: service_completed_successfully postgres: condition: service_healthy meilisearch: condition: service_healthy healthcheck: test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:8080/health"] interval: 10s timeout: 5s retries: 5 indexer: build: context: .. dockerfile: apps/indexer/Dockerfile env_file: - ../.env ports: - "8081:8081" volumes: - ../libraries:/libraries depends_on: migrate: condition: service_completed_successfully postgres: condition: service_healthy meilisearch: condition: service_healthy healthcheck: test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:8081/health"] interval: 10s timeout: 5s retries: 5 backoffice: build: context: .. dockerfile: apps/backoffice/Dockerfile env_file: - ../.env environment: - PORT=${BACKOFFICE_PORT:-8082} - HOSTNAME=0.0.0.0 ports: - "${BACKOFFICE_PORT:-8082}:8082" depends_on: api: condition: service_healthy healthcheck: test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:8082/health"] interval: 10s timeout: 5s retries: 5 volumes: postgres_data: meili_data: