From 57d92de5e6852ca2a142e22607b903e0f27b11af Mon Sep 17 00:00:00 2001 From: RC-CHN <1051989940@qq.com> Date: Tue, 2 Dec 2025 14:31:39 +0800 Subject: [PATCH] feat(docker): add docker-compose configuration for PostgreSQL, Redis, EZ-API, and Balancer services --- docker-compose.yml | 82 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..065f608 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,82 @@ +services: + # 1. PostgreSQL Database + postgres: + image: postgres:15-alpine + container_name: ez-postgres + environment: + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 + networks: + - ez-network + + # 2. Redis Cache + redis: + image: redis:7-alpine + container_name: ez-redis + command: redis-server --appendonly yes + volumes: + - redis_data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 5s + retries: 5 + networks: + - ez-network + + # 3. EZ-API (Control Plane) + ez-api: + build: + context: . + dockerfile: Dockerfile + container_name: ez-api + ports: + - "${EZ_API_PORT}:${EZ_API_PORT}" + environment: + EZ_API_PORT: ${EZ_API_PORT} + EZ_PG_DSN: ${EZ_PG_DSN} + EZ_REDIS_ADDR: ${EZ_REDIS_ADDR} + EZ_REDIS_PASSWORD: ${EZ_REDIS_PASSWORD} + EZ_REDIS_DB: ${EZ_REDIS_DB} + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + networks: + - ez-network + + # 4. Balancer (Data Plane / Gateway) + balancer: + build: + context: ../balancer + dockerfile: Dockerfile + container_name: ez-balancer + ports: + - "${EZ_BALANCER_PORT}:${EZ_BALANCER_PORT}" + environment: + EZ_BALANCER_PORT: ${EZ_BALANCER_PORT} + EZ_REDIS_ADDR: ${EZ_REDIS_ADDR} + EZ_REDIS_PASSWORD: ${EZ_REDIS_PASSWORD} + EZ_REDIS_DB: ${EZ_REDIS_DB} + depends_on: + redis: + condition: service_healthy + networks: + - ez-network + +volumes: + postgres_data: + redis_data: + +networks: + ez-network: + driver: bridge \ No newline at end of file