Files
Edu/infra/apollo-router/Dockerfile
SpecialX 682f323bad chore(infra): docker dev-apps stack + apollo-router v1.45 compat
- 新增 docker-compose.dev-apps.yml:7 个应用服务容器化
  (iam/classes/core-edu/content/msg/push-gateway/api-gateway)
  + apollo-router override
- 新增 apollo-router dev-apps-entrypoint.sh / dev-apps-supergraph.yaml
  仅等待 5 个子图(iam/core-edu/content/msg/config-service)
  避免等待未启动的 ai/data-ana
- router.yaml:移除 v1.45 不兼容键
  (require_manifest/manifest_path/max_cost/max_batch_size)
  移除 ELv2 受限特性(persisted_queries/limits.max_depth)
  自托管无 GraphOS license
- docker-compose.yml:config-service 添加 NODE_ENV=production
  修复 pino-pretty devDep 误用
  apollo-router 添加 APOLLO_PERSISTED_QUERIES env
- services/{classes,core-edu,content,config-service}/Dockerfile
  重写为 repo 根 context + shared-ts/shared-proto 工作区依赖
  + --ignore-scripts
  修复 ERR_PNPM_WORKSPACE_PKG_NOT_FOUND 与 ERR_PNPM_IGNORED_BUILDS
- api-gateway healthcheck:wget --spider 改为 wget -O /dev/null
  修复 busybox 对 200+body 误报 exit 8
2026-07-22 11:35:02 +08:00

53 lines
2.4 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Apollo Router Dockerfile (v2.1 M2)
#
# 自包含镜像rover组合 supergraph+ apollo-router运行时
# 启动时自动等待子图就绪 → rover compose → 启动 router
FROM ghcr.io/apollographql/router:v1.45.0
USER root
# 安装 curlhealthcheck + rover 下载)
RUN apt-get update && \
apt-get install -y --no-install-recommends curl ca-certificates && \
rm -rf /var/lib/apt/lists/*
# 安装 roverApollo CLI for supergraph composition
# 直接下载 release tarball 解压到 /usr/local/bin避免 install 脚本参数兼容问题)
# tarball 内 rover 位于 dist/rover 子目录
RUN curl -sSL -o /tmp/rover.tar.gz https://github.com/apollographql/rover/releases/download/v0.30.0/rover-v0.30.0-x86_64-unknown-linux-gnu.tar.gz && \
mkdir -p /tmp/rover-extract && \
tar -xzf /tmp/rover.tar.gz -C /tmp/rover-extract && \
cp /tmp/rover-extract/dist/rover /usr/local/bin/rover && \
chmod +x /usr/local/bin/rover && \
rm -rf /tmp/rover.tar.gz /tmp/rover-extract && \
rover --version
# 预下载 supergraph 插件federation-rs supergraph v2.9.0
# 避免运行时因网络问题(如 GitHub 不可达)导致 rover compose 失败
# 插件会被缓存到 /root/.rover/bin/supergraph-v2.9.0
# tarball 内文件路径为 dist/supergraph需 --strip-components=1 解包
RUN APOLLO_ELV2_LICENSE=accept rover supergraph compose --config /dev/null --output /tmp/test-supergraph.graphql 2>&1 || \
(echo "[build] Pre-downloading supergraph plugin..." && \
curl -sSL -o /tmp/supergraph-plugin.tar.gz \
"https://github.com/apollographql/federation-rs/releases/download/supergraph%40v2.9.0/supergraph-v2.9.0-x86_64-unknown-linux-gnu.tar.gz" && \
mkdir -p /root/.rover/bin && \
tar -xzf /tmp/supergraph-plugin.tar.gz --strip-components=1 -C /root/.rover/bin/ dist/supergraph && \
mv /root/.rover/bin/supergraph /root/.rover/bin/supergraph-v2.9.0 && \
chmod +x /root/.rover/bin/supergraph-v2.9.0 && \
rm -f /tmp/supergraph-plugin.tar.gz /tmp/test-supergraph.graphql && \
echo "[build] Supergraph plugin pre-installed")
# 接受 ELv2 许可
ENV APOLLO_ELV2_LICENSE=accept
# 复制配置文件
COPY router.yaml /dist/configuration.yaml
COPY supergraph.yaml /dist/supergraph.yaml
COPY entrypoint.sh /dist/entrypoint.sh
RUN chmod +x /dist/entrypoint.sh
EXPOSE 3000 8088
ENTRYPOINT ["/dist/entrypoint.sh"]