- 新增 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
53 lines
2.4 KiB
Docker
53 lines
2.4 KiB
Docker
# Apollo Router Dockerfile (v2.1 M2)
|
||
#
|
||
# 自包含镜像:rover(组合 supergraph)+ apollo-router(运行时)
|
||
# 启动时自动等待子图就绪 → rover compose → 启动 router
|
||
|
||
FROM ghcr.io/apollographql/router:v1.45.0
|
||
|
||
USER root
|
||
|
||
# 安装 curl(healthcheck + rover 下载)
|
||
RUN apt-get update && \
|
||
apt-get install -y --no-install-recommends curl ca-certificates && \
|
||
rm -rf /var/lib/apt/lists/*
|
||
|
||
# 安装 rover(Apollo 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"]
|