services: medcord: image: ccr.ccs.tencentyun.com/arutera-docker/medcord-server:v0.4.3 container_name: "${CONTAINER_NAME}" restart: always networks: - 1panel-network ports: - "${PANEL_APP_PORT_HTTP}:3004" environment: HOSTNAME: 0.0.0.0 PORT: 3004 NODE_ENV: production OCR_SERVICE_URL: "http://${CONTAINER_NAME}-ocr:3005/ocr" NEXT_PUBLIC_APP_NAME: "Medcord·易录" # v0.4.2: DATABASE_URL 由 5 个文本字段拼接,不再走 1Panel service/apps 注入 DATABASE_URL: "postgresql://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@${PANEL_DB_HOST}:${PANEL_DB_PORT}/${PANEL_DB_NAME}" JWT_SECRET: "${JWT_SECRET}" ALIYUN_ACCESS_KEY_ID: "${ALIYUN_ACCESS_KEY_ID}" ALIYUN_ACCESS_KEY_SECRET: "${ALIYUN_ACCESS_KEY_SECRET}" SMS_SIGN_NAME: "${SMS_SIGN_NAME}" SMS_TEMPLATE_CODE: "${SMS_TEMPLATE_CODE}" SMS_VERIFY_CODE_EXPIRE: 300 SMS_MOCK_MODE: "false" REDIS_HOST: "${PANEL_REDIS_HOST}" REDIS_PORT: "${REDIS_PORT}" REDIS_PASSWORD: "${REDIS_PASSWORD}" REDIS_DB: "${REDIS_DB}" CAPTCHA_ENABLED: "true" CAPTCHA_LENGTH: 4 CAPTCHA_EXPIRE: 60 RATELIMIT_ENABLED: "true" RATELIMIT_DAILY_LIMIT: 20 SMS_WHITELIST_PHONES: "${SMS_WHITELIST_PHONES}" AI_PROVIDER: "${AI_PROVIDER}" AI_API_KEY: "${AI_API_KEY}" AI_BASE_URL: "${AI_BASE_URL}" AI_MODEL: "${AI_MODEL}" EMBEDDING_API_KEY: "${EMBEDDING_API_KEY}" EMBEDDING_MODEL: "${EMBEDDING_MODEL}" EMBEDDING_BASE_URL: "${EMBEDDING_BASE_URL}" FILE_ENCRYPTION_KEY: "${FILE_ENCRYPTION_KEY}" FILE_STORAGE_ROOT: /data/medical-files ADMIN_PHONE: "${ADMIN_PHONE}" volumes: - ./data:/data/medical-files depends_on: - medcord-ocr user: 1000:1000 labels: createdBy: Apps medcord-ocr: image: ccr.ccs.tencentyun.com/arutera-docker/medcord-ocr:v0.4.3 container_name: "${CONTAINER_NAME}-ocr" restart: always networks: - 1panel-network environment: PORT: 3005 OCR_TIMEOUT_SECS: 60 OCR_DPI: 96 OCR_PRELOAD: 1 labels: createdBy: Apps networks: 1panel-network: external: true