SuperAPI AI 工具集

local-eureka-env

部署与运维

查看项目

更新于 10-31 03:04

技能介绍

用途

本技能用于在任意 EBSCO FOLIO 仓库中工作时,操作本地的 FOLIO Eureka 平台环境。该环境是一套完整的本地平台,位于 ~/EBSCO-FOLIO/eureka-platform-bootstrap,包含 Kong、Keycloak、Vault、Kafka、PostgreSQL、各 manager,以及 12 个 mod-* 模块及其 sc-* 边车。环境只由该仓库的 ./start.sh 和 ./stop.sh 拉起与拆除;测试、部署、调试、复现等其余工作都在你当前所在仓库中、针对该环境进行。若技能被提及但并未要求执行任何环境操作,应说明后停止。

主要能力与使用方式

第一步是探测环境状态:用 curl 访问 http://localhost:8000/(返回 200/404 表示网关在线),并用 docker ps 按 compose 项目标签过滤容器。若网关有响应且容器健康则继续任务;若未运行,则进入引导仓库执行 ./start.sh --yes(首次运行是交互式的,约 10 分钟以上);若容器存在但某服务不健康,参考排障部分,恢复方式是重新运行 ./start.sh(每步幂等)。需注意:仅重新运行不会应用已修改的 compose 文件。

环境事实包括:API 网关 / 管理端口为 8000 / 8001;Keycloak 在 8080;Vault / 数据库 / Kafka / Kafka UI 分别为 8200 / 5432 / 9092 / 9080;模块直连端口 9001–9020 映射到模块的 8081;边车端口 19xxx 映射到边车 8081;模块 JDWP 为 100xx→5005,边车为 11xxx→5005;租户 / 管理员用户为 diku / folio:folio;管理客户端为 folio-backend-admin-client(密钥 folio-backend-admin-client-secret),另有 m2m-client。文档强调不要依赖记忆中的值,应重新读取对应文件确认。

重启与变更传播方面:任何 docker compose up 命令都需先进入 docker 目录并加载环境上下文(source .env.local.credentials,并执行 eval "$(python3 ../misc/docker-module-updater/run.py --module-env)")。原地重启服务用 docker compose restart <svc>;使 compose 文件变更(新环境变量、端口、镜像)生效需用 docker compose up -d --force-recreate <svc>,普通重跑会保留旧容器;修改边车 compose 后需对所有 sc-* 服务执行强制重建;整体重新拉起用 ./stop.sh --yes && ./start.sh --yes(数据卷保留)。重建后应验证容器健康,环境变量变更则用 docker exec <svc> printenv <VAR> 确认。

本地运行 Karate 测试:在 folio-integration-tests 目录使用 mvn test 并指定模块、-Dkarate.env=local、通过 -DargLine 传入 admin.name=folio 与 admin.password=folio,且必须加 -Dtest 并配合 -Dsurefire.failIfNoSpecifiedTests=false。karate.env=local 指向 localhost:8000/8080 并使用引导环境的客户端密钥,因此环境须先启动;admin.* 覆盖是必需的,因为本环境不存在 Karate 默认的 diku_admin/admin,且覆盖必须通过 -DargLine 传递。测试会自行创建随机租户,不影响 diku。

部署本地构建的模块镜像:环境按描述符派生的标签(MOD_<NAME>_IMAGE)运行镜像,不应编辑 compose 文件。需先加载环境上下文(两个导出均必需,否则模块会使用占位 Vault 令牌并崩溃重启),然后用 docker tag 将本地镜像重打为 $MOD_SCHEDULER_IMAGE,再 docker compose up -d 重建。该部署覆盖现有端点上的行为变更;新接口版本需要重新注册描述符,此时应说明并停止。验证时可通过 docker ps 检查健康,并经网关 :8000、模块直连端口或边车端口排查故障位置。

附加调试器:模块已监听 JDWP(suspend=n,可随时附加),IntelliJ/VS Code 远程 JVM 调试连接 localhost,模块用 100xx(如 mod-scheduler 为 10020、mod-users-keycloak 为 10009),边车用 11xxx。若要调试自己的代码,需先部署构建产物,否则断点会对应到不匹配的源码。

复现问题 / 验证修复:先确保环境启动;若需特定旧版本,可在 docker/.env.local 中固定 MOD_<NAME>_IMAGE=folioorg/<module>@sha256:...(摘要引用不受版本偏差 halt 限制,事后移除该行),然后运行 ./start.sh。通过网关以租户令牌复现;可用 docker exec 进入数据库检查 Liquibase 迁移;本地修复后按第三步部署并确认问题消失。

版本移动:全部模块升至最新用 ./start.sh --actualize(加 --pre-release 用于 SNAPSHOT)。若 docker/.env.local 中存在与描述符不一致的过期 MOD_*_IMAGE 覆盖,./start.sh 会按设计中止(偏差保护),中止消息会列出模块与恢复方式。

适用场景

适用于在本地 Eureka 环境中运行 Karate 或集成测试、部署本地构建的模块镜像、连接调试器、复现缺陷或验证修复,以及检查数据库迁移是否生效。

限制

排障表列出若干症状与处理:手动部署后模块崩溃重启通常是占位 Vault 令牌导致;启动在描述符/镜像偏差时中止;注册期间出现 503/504 多为 Kong DNS 预热,可重跑启动;8000/8080 被非 Docker 进程占用需先释放端口;Karate 在权益环节失败通常是运行容器与已注册描述符之间的环境级版本偏差,需检查 mgr-tenant-entitlements 日志并重新拉起;内存不足或模块缓慢需将 Docker 内存提升至 12GB 以上。不要直接在 docker 目录运行裸的 docker compose down(所有服务受 profile 门控,会静默无效),拆除应使用 ./stop.sh。本技能范围仅限操作环境并针对其运行任务;扩展模块集、修改引导内部或超出摘要固定的描述符操作属于对 eureka-platform-bootstrap 本身的改动,不在范围内。