# 开发环境 Docker Compose # 使用方法: docker compose -f docker-compose.dev.yml up -d # # 宿主端口为项目约定的固定高位端口(避免与本机常用 5432/6379 冲突),与本仓库 .env.example 对齐: # PostgreSQL 127.0.0.1:48291 → 容器 5432 # Redis 127.0.0.1:48307 → 容器 6379 services: # PostgreSQL 数据库(pg17 + pgvector,memory 模块需要 vector 类型) postgres: image: pgvector/pgvector:pg17 container_name: life-echo-postgres-dev ports: - "48291:5432" environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: life_echo volumes: - postgres_data_dev:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 # Redis 服务(用于会话存储和 Celery) redis: image: redis:7-alpine container_name: life-echo-redis-dev ports: - "48307:6379" environment: REDIS_PASSWORD: ${REDIS_PASSWORD:-} volumes: - redis_data_dev:/data command: > sh -c 'exec redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru $${REDIS_PASSWORD:+--requirepass "$$REDIS_PASSWORD"}' restart: unless-stopped healthcheck: test: [ "CMD-SHELL", 'if [ -n "$$REDIS_PASSWORD" ]; then redis-cli -a "$$REDIS_PASSWORD" ping | grep -q PONG; else redis-cli ping | grep -q PONG; fi', ] interval: 10s timeout: 5s retries: 5 networks: default: name: life-echo-dev volumes: postgres_data_dev: driver: local redis_data_dev: driver: local