feat: add production docker-compose with hrynco-services network
- Base compose: explicit internal network, named volumes with VOLUME_PREFIX - docker-compose.prod.yml: production images, ports, restart policies, hrynco-services external network on rabbitmq - docker-compose.Development.yml: cleaned up orphan volumes, named dev volumes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -26,31 +26,22 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
image: rabbitmq:4-management-alpine
|
|
||||||
environment:
|
environment:
|
||||||
RABBITMQ_DEFAULT_USER: guest
|
RABBITMQ_DEFAULT_USER: guest
|
||||||
RABBITMQ_DEFAULT_PASS: guest
|
RABBITMQ_DEFAULT_PASS: guest
|
||||||
ports:
|
ports:
|
||||||
- "5672:5672"
|
- "5672:5672"
|
||||||
- "15672:15672"
|
- "15672:15672"
|
||||||
healthcheck:
|
networks:
|
||||||
test: ["CMD", "rabbitmq-diagnostics", "ping"]
|
- internal
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
volumes:
|
|
||||||
- notification_rabbitmq:/var/lib/rabbitmq
|
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: postgres:17
|
|
||||||
environment:
|
|
||||||
POSTGRES_DB: notification_service
|
|
||||||
POSTGRES_USER: postgres
|
|
||||||
POSTGRES_PASSWORD: postgres
|
|
||||||
ports:
|
ports:
|
||||||
- "5433:5432"
|
- "5433:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- notification_db:/var/lib/postgresql/data
|
- pgdata:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
seq:
|
seq:
|
||||||
image: datalust/seq:2024
|
image: datalust/seq:2024
|
||||||
@@ -60,9 +51,14 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "5342:80"
|
- "5342:80"
|
||||||
volumes:
|
volumes:
|
||||||
- notification_seq:/data
|
- seq_data:/data
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
notification_db:
|
pgdata:
|
||||||
notification_seq:
|
name: ns-dev-pgdata
|
||||||
notification_rabbitmq:
|
rabbitmq_data:
|
||||||
|
name: ns-dev-rabbitmq-data
|
||||||
|
seq_data:
|
||||||
|
name: ns-dev-seq
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
services:
|
||||||
|
migrator:
|
||||||
|
build: {}
|
||||||
|
image: registry.grynco.com.ua/hrynco.notification-service.migrator:${MIGRATOR_IMAGE_TAG:?MIGRATOR_IMAGE_TAG is required}
|
||||||
|
|
||||||
|
api:
|
||||||
|
build: {}
|
||||||
|
image: registry.grynco.com.ua/hrynco.notification-service.web:${WEB_IMAGE_TAG:?WEB_IMAGE_TAG is required}
|
||||||
|
ports:
|
||||||
|
- "${API_PORT:?API_PORT is required}:8080"
|
||||||
|
environment:
|
||||||
|
- Serilog__WriteTo__1__Args__serverUrl=${SEQ_URL:-}
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
worker:
|
||||||
|
build: {}
|
||||||
|
image: registry.grynco.com.ua/hrynco.notification-service.worker:${WORKER_IMAGE_TAG:?WORKER_IMAGE_TAG is required}
|
||||||
|
environment:
|
||||||
|
- Serilog__WriteTo__1__Args__serverUrl=${SEQ_URL:-}
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
- hrynco-services
|
||||||
|
|
||||||
|
db:
|
||||||
|
ports:
|
||||||
|
- "${DB_PORT:?DB_PORT is required}:5432"
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
networks:
|
||||||
|
internal: {}
|
||||||
|
hrynco-services:
|
||||||
|
external: true
|
||||||
|
name: hrynco-services
|
||||||
@@ -6,7 +6,7 @@ services:
|
|||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: HrynCo.NotificationService.Migrator/Dockerfile
|
dockerfile: HrynCo.NotificationService.Migrator/Dockerfile
|
||||||
environment:
|
environment:
|
||||||
- App__ConnectionString=${CONNECTION_STRING}
|
- 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:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
@@ -18,7 +18,7 @@ services:
|
|||||||
dockerfile: HrynCo.NotificationService.Web/Dockerfile
|
dockerfile: HrynCo.NotificationService.Web/Dockerfile
|
||||||
environment:
|
environment:
|
||||||
- ASPNETCORE_ENVIRONMENT=Production
|
- ASPNETCORE_ENVIRONMENT=Production
|
||||||
- App__ConnectionString=${CONNECTION_STRING}
|
- 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:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
@@ -31,10 +31,11 @@ services:
|
|||||||
dockerfile: HrynCo.NotificationService.Worker/Dockerfile
|
dockerfile: HrynCo.NotificationService.Worker/Dockerfile
|
||||||
environment:
|
environment:
|
||||||
- DOTNET_ENVIRONMENT=Production
|
- DOTNET_ENVIRONMENT=Production
|
||||||
- App__ConnectionString=${CONNECTION_STRING}
|
- 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__Host=rabbitmq
|
||||||
- App__RabbitMq__User=${RABBITMQ_USER:-guest}
|
- App__RabbitMq__Port=5672
|
||||||
- App__RabbitMq__Password=${RABBITMQ_PASSWORD:-guest}
|
- App__RabbitMq__User=${RABBITMQ_USER:?RABBITMQ_USER is required}
|
||||||
|
- App__RabbitMq__Password=${RABBITMQ_PASSWORD:?RABBITMQ_PASSWORD is required}
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
@@ -46,10 +47,38 @@ services:
|
|||||||
rabbitmq:
|
rabbitmq:
|
||||||
image: rabbitmq:4-management-alpine
|
image: rabbitmq:4-management-alpine
|
||||||
environment:
|
environment:
|
||||||
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-guest}
|
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:?RABBITMQ_USER is required}
|
||||||
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-guest}
|
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:
|
healthcheck:
|
||||||
test: ["CMD", "rabbitmq-diagnostics", "ping"]
|
test: ["CMD", "rabbitmq-diagnostics", "ping"]
|
||||||
interval: 10s
|
interval: 10s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
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
|
||||||
|
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user