services: postgres: # Production runs AWS RDS for PostgreSQL 17.9. Dev/CI are intentionally # ahead on 18, to validate the 18.4 major upgrade before it ships to RDS. image: postgres:18-alpine environment: - POSTGRES_HOST_AUTH_METHOD=trust ports: - "5432:5432" volumes: - pg_data:/var/lib/postgresql/18/docker healthcheck: test: ["CMD-SHELL", "pg_isready", "-d", "db_prod"] interval: 10s timeout: 5s retries: 5 start_period: 10s rabbitmq: # Pinned to match production (Amazon MQ for RabbitMQ 4.2), which is the # latest version Amazon MQ offers. The floating `4-alpine` tag now resolves # to 4.3, which changes redelivery accounting. image: rabbitmq:4.2-alpine ports: - "15672:15672" - "5672:5672" volumes: - "./rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins" healthcheck: test: ["CMD-SHELL", "rabbitmq-diagnostics", "-q", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 10s redis: command: redis-server --appendonly yes # Last time I have checked, production is running 6.2.14 image: redis:6-alpine ports: - "6380:6379" volumes: - redis_data:/data healthcheck: test: ["CMD-SHELL", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 10s dynamodb: image: amazon/dynamodb-local ports: - "8000:8000" command: "-jar DynamoDBLocal.jar -sharedDb -inMemory" healthcheck: test: ["CMD-SHELL", "curl", "-f", "http://localhost:8000"] interval: 10s timeout: 5s retries: 5 start_period: 10s volumes: pg_data: redis_data: