跳到主要内容
版本:3.10.x

部署开发者门户

API7 开发者门户由协同工作的两个官方容器镜像组成:

图片角色港口源代码库
api7/api7-ee-developer-portal门户 API(后端) — 存储门户定义、API 产品、开发者、应用程序、订阅和凭证的 Go 服务。与控制面的其余部分共享主 api7ee PostgreSQL 数据库。4321 (HTTPS)api7ee-3-control-plane
api7/api7-ee-developer-portal-fe开发者门户前端 — 开发者登录的面向客户的 Next.js Web 应用程序。使用自己的 PostgreSQL 进行用户会话和开发者账户(通过 Better Auth + Drizzle),并使用每个门户令牌与门户 API 进行通信。3001api7ee-developer-portal

一个后端为你的整个组织服务;如果你想要单独的品牌或受众,你可以部署多个前端实例(每个门户一个)。

本指南展示了如何从头开始部署完整堆栈。在 Kubernetes 上的大多数生产部署中,后端已作为主 api7/api7ee3 Helm 图表的一部分安装;在这种情况下,你只需部署前端并将其指向现有门户 API。

先决条件

  • 使用支持门户的许可证安装和激活 API7 Enterprise(试用许可证默认包括门户支持)。
  • 从前端主机到门户 API 端点(4321/tcp)的网络连接。
  • Docker 和 Docker Compose,或带有 Helm 的 Kubernetes 集群,具体取决于你选择的部署方法。

步骤 1:在提供商门户中创建门户和令牌

在部署开发者门户前端之前,创建门户实例并从 API7 仪表板生成连接令牌。

1.登录API7仪表板。 2. 导航到 提供商门户 > 添加门户。 3. 提供 名称 和可访问 开发者门户的 公共 URL(例如,https://portal.example.com)。 4. 创建门户后,打开其设置 > 令牌选项卡。 5. 单击生成新令牌并保存令牌(格式:a7prt-xxxxxxxxxxxx)。你将其粘贴到步骤 2 中的前端配置中。

:::信息

每个门户都有一个唯一的公共 URL。单个门户可以支持一个前端实例或共享相同令牌和用户会话数据库的多个前端副本。

:::

第二步:编写配置文件

后端和前端从单独的 YAML 文件中读取其配置。创建一个工作目录并添加这两个文件。

mkdir api7-developer-portal && cd api7-developer-portal
mkdir -p backend_conf frontend_conf

后端配置 — backend_conf/conf.yaml

后端连接到控制面的主 api7ee 数据库。下面的 DSN 与 api7/api7ee3 Helm 图表中的默认凭证匹配;根据需要进行调整。

backend_conf/conf.yaml
server:
listen:
host: "0.0.0.0"
port: 4321
tls:
enabled: true
key_file: "" # Optional: /app/certs/tls.key for TLS termination
cert_file: "" # Optional: /app/certs/tls.crt for TLS termination
status:
disable: false
host: "127.0.0.1"
port: 4322

log:
level: warn
output: stderr
access_log: stdout

database:
dsn: "postgres://api7ee:YOUR_DB_PASSWORD@api7-postgresql:5432/api7ee"
max_open_conns: 30
max_idle_time: 30s
timeout: 5s

前端配置 — frontend_conf/config.yaml

前端使用你在步骤 1 中生成的门户令牌指向后端,并为用户会话保留自己的小型 PostgreSQL。

frontend_conf/config.yaml
portal:
# 门户 API 端点(后端)。根据实际情况使用公共地址或内部地址。
url: https://api7-developer-portal-backend:4321
# 步骤 1 中从提供商门户生成的令牌。
token: a7prt-xxxxxxxxxxxx

db:
# PostgreSQL connection string for the frontend's user-session database.
url: "postgres://portal:YOUR_PORTAL_DB_PASSWORD@portal-postgres:5432/portal"

auth:
# Generate a secure value: openssl rand -base64 32
secret: "REPLACE_WITH_SECURE_RANDOM_STRING"

app:
# 开发者访问此门户所使用的公共 URL。
baseURL: "https://portal.example.com"
trustedOrigins:
- "https://portal.example.com"
备注

在任何共享环境中运行之前,将 auth.secret 替换为安全生成的随机值。不要在生产中使用示例值。

步骤 3:部署

选择适合你环境的部署方法。

Docker Compose 是运行独立 开发者门户堆栈进行开发或测试的最快方法。下面的 Compose 文件会显示两个图像(后端和前端)以及用于前端用户会话的专用 PostgreSQL。

在同目录下创建docker-compose.yaml

docker-compose.yaml
services:
api7-postgresql:
image: postgres:16
hostname: api7-postgresql
environment:
POSTGRES_USER: api7ee
POSTGRES_PASSWORD: YOUR_DB_PASSWORD
POSTGRES_DB: api7ee
healthcheck:
test: ["CMD", "pg_isready", "-U", "api7ee"]
interval: 5s
timeout: 5s
retries: 5
networks:
- portal

portal-postgres:
image: postgres:16
hostname: portal-postgres
environment:
POSTGRES_USER: portal
POSTGRES_PASSWORD: YOUR_PORTAL_DB_PASSWORD
POSTGRES_DB: portal
volumes:
- portal_postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "portal", "-d", "portal"]
interval: 5s
timeout: 5s
retries: 5
networks:
- portal

api7-developer-portal-backend:
image: api7/api7-ee-developer-portal:${API7_VERSION}
hostname: api7-developer-portal-backend
restart: always
volumes:
- ./backend_conf/conf.yaml:/usr/local/api7/conf/conf.yaml:ro
command:
- /usr/local/api7/api7-ee-developer-portal
- -c
- /usr/local/api7/conf/conf.yaml
ports:
- "4321:4321"
depends_on:
api7-postgresql:
condition: service_healthy
networks:
- portal

api7-developer-portal-frontend:
image: api7/api7-ee-developer-portal-fe:${API7_VERSION}
hostname: api7-developer-portal-frontend
restart: always
volumes:
- ./frontend_conf/config.yaml:/app/apps/site/config.yaml:ro
environment:
# Defaults to "1" (strict TLS verification).
# Only set to "0" in development if the backend uses a self-signed certificate.
NODE_TLS_REJECT_UNAUTHORIZED: "1"
ports:
- "3001:3001"
depends_on:
portal-postgres:
condition: service_healthy
api7-developer-portal-backend:
condition: service_started
networks:
- portal

networks:
portal:
driver: bridge

volumes:
portal_postgres_data:

设置镜像版本并启动堆栈:

export API7_VERSION=3.9.10   # pin to a specific release; see Supported Versions
docker compose up -d

检查所有四个容器是否都达到 healthy / Up 状态:

docker compose ps
备注

此 Compose 文件将其自己的 PostgreSQL 与后端一起部署以实现自我包含。在实际部署中,后端通常共享控制面的其余部分使用的主 api7ee PostgreSQL — 将 backend_conf/conf.yaml 指向该现有数据库,并从 Compose 文件中删除 api7-postgresql 服务。

步骤 4:验证部署

  1. 在浏览器中打开你配置的公共URL(app.baseURL),例如https://portal.example.com
  2. 验证主页是否加载并且注册按钮可见。
  3. 创建测试开发者账户以确认身份验证功能正常。
  4. 导航到 API Hub 以确认前端可以到达门户 API。如果 API 产品已发布到此门户,它们将出现在此处。

部署多个门户实例

你可以针对同一后端部署多个 开发者门户前端 — 每个前端服务于不同的受众(例如,公共开发者、内部团队或合作伙伴):

  1. 在提供商门户中,创建一个具有唯一名称和公共 URL 的附加门户。
  2. 为该门户生成新令牌。
  3. 使用新令牌和 config.yaml 中的公共 URL 部署另一个前端实例(Kubernetes 上的新 Deployment 或单独的 Compose 堆栈)。

API 产品发布到特定门户。发布到一个门户的 API 产品在另一个门户上不可见,除非你也明确将其发布到该门户。

后续步骤