rinha-backend-node-2025/docker-compose.yml

115 lines
2.1 KiB
YAML

services:
api1:
container_name: api1
hostname: api1
image: payment2:latest
networks:
- backend
- payment-processor
depends_on:
- redis
- database
deploy:
resources:
limits:
cpus: "0.30"
memory: "80MB"
healthcheck:
test: [ "CMD", "curl", "-f", "http://api1:9999" ]
interval: 30s
timeout: 10s
retries: 3
api2:
container_name: api2
hostname: api2
image: payment2:latest
depends_on:
- redis
- database
networks:
- backend
- payment-processor
deploy:
resources:
limits:
cpus: "0.30"
memory: "80MB"
healthcheck:
test: [ "CMD", "curl", "-f", "http://api2:9999" ]
interval: 30s
timeout: 10s
retries: 3
nginx:
image: nginx:latest
container_name: nginx
hostname: nginx
ports:
- "9999:9999"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
networks:
- backend
depends_on:
- api1
- api2
deploy:
resources:
limits:
cpus: "0.1"
memory: "10MB"
redis:
image: redis:7.2-alpine
hostname: redis
platform: linux/amd64
ports:
- "6379:6379"
networks:
- backend
volumes:
- redis_data1:/data
deploy:
resources:
limits:
cpus: "0.10"
memory: "48MB"
database:
container_name: database
image: postgres:alpine
hostname: database
platform: linux/amd64
ports:
- "5432:5432"
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres -d payment" ]
interval: 5s
timeout: 5s
retries: 5
environment:
- POSTGRES_DB=payment
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres_pwd
volumes:
- database_volume1:/var/lib/postgresql/data
- ./docker/db_init.sql:/docker-entrypoint-initdb.d/
networks:
- backend
deploy:
resources:
limits:
cpus: "0.70"
memory: "117MB"
networks:
backend:
driver: bridge
payment-processor:
external: true
volumes:
database_volume1:
redis_data1: