x-api_template: &api build: context: . target: prod depends_on: # influxdb: # condition: service_healthy redis: condition: service_healthy volumes: - socket_data:/tmp - ./profile:/app/profile deploy: resources: limits: cpus: "0.5" memory: "100MB" networks: - backend - payment-processor services: nginx: image: nginx:latest ports: - "9999:80" networks: - backend depends_on: - api1 - api2 deploy: resources: limits: cpus: "0.45" memory: "70MB" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - socket_data:/tmp api1: <<: *api environment: # - CPU_PROFILE=/app/profile/diogenes6.pprof # - TRACE_PROFILE=/app/profile/trace6.pprof - SOCKET_PATH=/tmp/api1.sock - DEBUG=false - REDIS_URL=/tmp/redis.sock - REDIS_DB=rinha - PROCESSOR_DEFAULT_URL=http://payment-processor-default:8080 - PROCESSOR_FALLBACK_URL=http://payment-processor-fallback:8080 - NUM_WORKERS=6 api2: <<: *api environment: - SOCKET_PATH=/tmp/api2.sock - DEBUG=false - REDIS_URL=/tmp/redis.sock - REDIS_DB=rinha - PROCESSOR_DEFAULT_URL=http://payment-processor-default:8080 - PROCESSOR_FALLBACK_URL=http://payment-processor-fallback:8080 - NUM_WORKERS=6 redis: image: redis:latest container_name: redis volumes: - ./redis.conf:/usr/local/etc/redis.conf - socket_data:/tmp ports: - "6379:6379" networks: - backend environment: - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD= - REDIS_DB=rinha command: bash -c "rm -rf /tmp/redis.sock && redis-server /usr/local/etc/redis.conf" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 1s timeout: 3s retries: 30 deploy: resources: limits: cpus: "0.05" memory: "50MB" # influxdb: # image: influxdb:3.0.3-core # container_name: influxdb # volumes: # - influxdb_data:/var/lib/influxdb2 # - socket_data:/tmp # networks: # - backend # environment: # - INFLUXDB3_OBJECT_STORE=memory # - INFLUXDB3_AUTH_TOKEN=_admin # # TODO: change to error # - INFLUXDB3_LOG_FILTER=info # - INFLUXDB3_NODE_IDENTIFIER_PREFIX=rinha # - INFLUXDB3_HTTP_BIND_ADDR=influxdb:8181 # - INFLUXDB3_START_WITHOUT_AUTH=true # ports: # - "8181:8181" # healthcheck: # test: "curl -f http://influxdb:8181/ping" # interval: 5s # timeout: 5s # retries: 2 # deploy: # resources: # limits: # cpus: "0.5" # memory: "150MB" # cpus: nginx 0.15 apps 0.30 redis 1.15 = 1.5 total # # memory: nginx 15MB apps 30MB redis 305MB = 350MB total networks: backend: driver: bridge payment-processor: external: true volumes: socket_data: influxdb_data: