166b1a6103
- Add pg_isready healthcheck to db service (5s interval, 10 retries) - Change migrator depends_on condition: service_started -> service_healthy - Prevents migrator connection failure on fresh postgres startup Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
89 lines
2.8 KiB
YAML
89 lines
2.8 KiB
YAML
name: hrynco-notification-service
|
|
|
|
services:
|
|
migrator:
|
|
build:
|
|
context: ../..
|
|
dockerfile: HrynCo.NotificationService.Migrator/Dockerfile
|
|
environment:
|
|
- App__ConnectionString=Host=db;Port=5432;Database=${DB_NAME:?DB_NAME is required};Username=${DB_USER:?DB_USER is required};Password=${DB_PASS:?DB_PASS is required}
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
restart: "no"
|
|
|
|
api:
|
|
build:
|
|
context: ../..
|
|
dockerfile: HrynCo.NotificationService.Web/Dockerfile
|
|
environment:
|
|
- ASPNETCORE_ENVIRONMENT=Production
|
|
- App__ConnectionString=Host=db;Port=5432;Database=${DB_NAME:?DB_NAME is required};Username=${DB_USER:?DB_USER is required};Password=${DB_PASS:?DB_PASS is required}
|
|
depends_on:
|
|
db:
|
|
condition: service_started
|
|
migrator:
|
|
condition: service_completed_successfully
|
|
|
|
worker:
|
|
build:
|
|
context: ../..
|
|
dockerfile: HrynCo.NotificationService.Worker/Dockerfile
|
|
environment:
|
|
- DOTNET_ENVIRONMENT=Production
|
|
- App__ConnectionString=Host=db;Port=5432;Database=${DB_NAME:?DB_NAME is required};Username=${DB_USER:?DB_USER is required};Password=${DB_PASS:?DB_PASS is required}
|
|
- App__RabbitMq__Host=rabbitmq
|
|
- App__RabbitMq__Port=5672
|
|
- App__RabbitMq__User=${RABBITMQ_USER:?RABBITMQ_USER is required}
|
|
- App__RabbitMq__Password=${RABBITMQ_PASSWORD:?RABBITMQ_PASSWORD is required}
|
|
depends_on:
|
|
db:
|
|
condition: service_started
|
|
migrator:
|
|
condition: service_completed_successfully
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
|
|
rabbitmq:
|
|
image: rabbitmq:4-management-alpine
|
|
environment:
|
|
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:?RABBITMQ_USER is required}
|
|
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:?RABBITMQ_PASSWORD is required}
|
|
ports:
|
|
- "${RABBITMQ_AMQP_PORT:?RABBITMQ_AMQP_PORT is required}:5672"
|
|
- "${RABBITMQ_MANAGEMENT_PORT:?RABBITMQ_MANAGEMENT_PORT is required}:15672"
|
|
volumes:
|
|
- rabbitmq_data:/var/lib/rabbitmq
|
|
networks:
|
|
- internal
|
|
healthcheck:
|
|
test: ["CMD", "rabbitmq-diagnostics", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
db:
|
|
image: postgres:17
|
|
environment:
|
|
- POSTGRES_DB=${DB_NAME:?DB_NAME is required}
|
|
- POSTGRES_USER=${DB_USER:?DB_USER is required}
|
|
- POSTGRES_PASSWORD=${DB_PASS:?DB_PASS is required}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
networks:
|
|
- internal
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
volumes:
|
|
pgdata:
|
|
name: ${VOLUME_PREFIX:?VOLUME_PREFIX is required}-pgdata
|
|
rabbitmq_data:
|
|
name: ${VOLUME_PREFIX:?VOLUME_PREFIX is required}-rabbitmq-data
|
|
|
|
networks:
|
|
internal:
|
|
driver: bridge |