name: gongxiangp2-local-test services: postgres: image: docker.m.daocloud.io/library/postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: gongxiangp2_test POSTGRES_USER: workreview POSTGRES_PASSWORD: ${LOCAL_POSTGRES_PASSWORD} ports: - "127.0.0.1:55432:5432" volumes: - local-test-postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U workreview -d gongxiangp2_test"] interval: 5s timeout: 3s retries: 30 redis: image: docker.1ms.run/library/redis:7-alpine restart: unless-stopped command: redis-server --save "" --appendonly no ports: - "127.0.0.1:56379:6379" volumes: - local-test-redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 30 minio: image: docker.m.daocloud.io/minio/minio:latest restart: unless-stopped command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${LOCAL_MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${LOCAL_MINIO_ROOT_PASSWORD} ports: - "127.0.0.1:59000:9000" - "127.0.0.1:59001:9001" volumes: - local-test-minio:/data healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 5s timeout: 3s retries: 30 minio-init: image: docker.m.daocloud.io/minio/mc:latest restart: "no" depends_on: minio: condition: service_healthy entrypoint: ["/bin/sh", "-c"] command: - > mc alias set local http://minio:9000 "$$MINIO_ROOT_USER" "$$MINIO_ROOT_PASSWORD" && mc mb --ignore-existing local/gongxiangp2-test && mc anonymous set download local/gongxiangp2-test environment: MINIO_ROOT_USER: ${LOCAL_MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${LOCAL_MINIO_ROOT_PASSWORD} app: build: context: . dockerfile: Dockerfile args: BASE_IMAGE: docker.m.daocloud.io/library/node:18-alpine image: gongxiangp2-local-test:latest restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy minio-init: condition: service_completed_successfully ports: - "127.0.0.1:4321:3000" environment: NODE_ENV: production PORT: 3000 DATABASE_URL: postgresql://workreview:${LOCAL_POSTGRES_PASSWORD}@postgres:5432/gongxiangp2_test NEXTAUTH_URL: http://localhost:4321 APP_PUBLIC_URL: http://localhost:4321 NEXT_PUBLIC_APP_PUBLIC_URL: http://localhost:4321 NEXTAUTH_SECRET: ${LOCAL_NEXTAUTH_SECRET} CORS_ALLOWED_ORIGINS: http://localhost:4321,http://127.0.0.1:4321 UPLOAD_DIR: /app/uploads USE_REDIS: "true" REDIS_URL: redis://redis:6379 STORAGE_PROVIDER: s3 S3_ENDPOINT: http://minio:9000 S3_BUCKET: gongxiangp2-test S3_ACCESS_KEY_ID: ${LOCAL_MINIO_ROOT_USER} S3_SECRET_ACCESS_KEY: ${LOCAL_MINIO_ROOT_PASSWORD} S3_REGION: us-east-1 S3_PUBLIC_DOMAIN: http://localhost:59000/gongxiangp2-test S3_FILE_PATH: local-test/ S3_ENABLE_PATH_STYLE: "1" S3_SET_ACL: "1" SERVER_IP: 127.0.0.1 MINIO_API_PORT: 59000 KEY_VAULTS_SECRET: ${LOCAL_KEY_VAULTS_SECRET} PGVECTOR_DB_URL: postgresql://workreview:${LOCAL_POSTGRES_PASSWORD}@postgres:5432/gongxiangp2_test DOWNLOAD_TOKEN_SECRET: ${LOCAL_DOWNLOAD_TOKEN_SECRET} ADMIN_API_KEY: ${LOCAL_ADMIN_API_KEY} GEMINI_API_KEY: "" DINGTALK_CLIENT_ID: "" DINGTALK_CLIENT_SECRET: "" DINGTALK_PERFORMANCE_SURVEY_NOTIFICATION_CHANNEL: work_notice YYD_NOTIFICATION_CENTER_URL: "" PERFORMANCE_SURVEY_DAILY_SYNC_INITIAL_DELAY_SECONDS: "86400" volumes: - local-test-uploads:/app/uploads healthcheck: test: [ "CMD", "node", "-e", "fetch('http://127.0.0.1:3000/login').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))", ] interval: 10s timeout: 5s retries: 30 start_period: 30s volumes: local-test-postgres: local-test-redis: local-test-minio: local-test-uploads: