该镜像为Ed-Fi ODS/API提供Docker部署源代码,用于生成年度特定和地区特定安装的Docker Compose文件。使用前需参考Docker部署文档(v2)设置Docker环境。
当前发布的活跃Docker标签:
TAG=2.3.1:对应ODS/API 6.2(运行于.NET 8)ADMINAPP_TAG=v3.2.1:对应Admin App 3.2.1(运行于.NET Core 3.1)Compose文件通过PgBouncer将数据库暴露到Docker网络外部。如需禁用此功能,需修改Compose文件,移除数据库PgBouncers的ports键。例如:
原配置:
yamlpb-ods: build: context: ../../PgBouncer/Alpine dockerfile: Dockerfile environment: PGBOUNCER_DATABASE: "*" PGBOUNCER_PORT: "${PGBOUNCER_LISTEN_PORT:-6432}" PGBOUNCER_EXTRA_FLAGS: ${PGBOUNCER_EXTRA_FLAGS} POSTGRESQL_USER: "${POSTGRES_USER}" POSTGRESQL_PASSWORD: "${POSTGRES_PASSWORD}" POSTGRESQL_HOST: db-ods PGBOUNCER_SET_DATABASE_USER: "yes" PGBOUNCER_SET_DATABASE_PASSWORD: "yes" ports: - "5402:${PGBOUNCER_LISTEN_PORT:-6432}" restart: always container_name: ed-fi-pb-ods depends_on: - db-ods
修改后:
yamlpb-ods: build: context: ../../PgBouncer/Alpine dockerfile: Dockerfile environment: PGBOUNCER_DATABASE: "*" PGBOUNCER_PORT: "${PGBOUNCER_LISTEN_PORT:-6432}" PGBOUNCER_EXTRA_FLAGS: ${PGBOUNCER_EXTRA_FLAGS} POSTGRESQL_USER: "${POSTGRES_USER}" POSTGRESQL_PASSWORD: "${POSTGRES_PASSWORD}" POSTGRESQL_HOST: db-ods PGBOUNCER_SET_DATABASE_USER: "yes" PGBOUNCER_SET_DATABASE_PASSWORD: "yes" restart: always container_name: ed-fi-pb-ods depends_on: - db-ods
仓库中包含的.env.example文件列出了所有支持的环境变量。
环境变量POSTGRESQL_USER: "${POSTGRES_USER}"和POSTGRESQL_PASSWORD: "${POSTGRES_PASSWORD}"用于设置auth_file安全机制。通过暴露的pgbouncer端口进行的连接需要有效的用户名和密码。变量PGBOUNCER_SET_DATABASE_USER: "yes"和PGBOUNCER_SET_DATABASE_PASSWORD: "yes"会在连接字符串中包含数据库和密码,允许访问PG服务器中的数据库。
默认情况下,PgBouncer会记录包含敏感信息(如主机数据库用户名和密码)的配置文件。可通过应用QUIET标志禁用此功能。最新版本的.env.example包含配置变量PGBOUNCER_EXTRA_FLAGS="--quiet",可抑制此类消息。但未提供PGBOUNCER_QUIET配置变量的旧.env文件仍有在日志中暴露敏感信息的风险。
这些Compose文件使用PGBouncer为PostgreSQL提供服务器端连接池解决方案。若无此类连接管理,数据库服务器可能会耗尽连接并需要重启。除PGBouncer外,另一种方法是使用npgsql ADO.NET数据提供程序提供的客户端连接池,但使用前需考虑以下重要事项。
npgsql的客户端池基于连接字符串(参见Npgsql连接池说明)。可在连接字符串中配置池的最小(默认=0)和最大(默认=100)大小。首次从客户端池请求连接时,池将使用配置的最小连接数(默认=0)初始化。之后,池会根据需要增长到配置的最大值(默认=100)。此外,池会在一段不活动时间后释放空闲连接(默认=300秒)。
客户端池的挑战之一是PostgreSQL默认连接限制为100,因此配置客户端池时,部署环境的性质将极大影响适当的配置(以避免因超出可用连接总数而导致连接失败)。需考虑:
因此,客户端池可能仅适用于最简单的部署。
以下环境变量可用于控制API、Admin App和Sandbox Admin容器的客户端池:
| 名称 | 适用对象 | 描述 |
|---|---|---|
NPG_POOLING_ENABLED | 所有应用 | 启用或禁用客户端池(默认:false) |
NPG_API_MAX_POOL_SIZE_ODS | API | 每个Ed-Fi ODS API容器对每个不同ODS数据库的最大连接数 |
NPG_API_MAX_POOL_SIZE_ADMIN | API | 每个Ed-Fi ODS API容器对EdFi_Admin数据库的最大连接数 |
NPG_API_MAX_POOL_SIZE_SECURITY | API | 每个Ed-Fi ODS API容器对EdFi_Security数据库的最大连接数 |
NPG_API_MAX_POOL_SIZE_MASTER | API | 每个Ed-Fi ODS API容器对'postgres'默认数据库的最大连接数 |
NPG_ADMIN_MAX_POOL_SIZE_ODS | Admin App | 每个Admin App容器对每个不同ODS数据库的最大连接数 |
NPG_ADMIN_MAX_POOL_SIZE_ADMIN | Admin App | 每个Admin App容器对EdFi_Admin数据库的最大连接数 |
NPG_ADMIN_MAX_POOL_SIZE_SECURITY | Admin App | 每个Admin App容器对EdFi_Security数据库的最大连接数 |
NPG_SANDBOX_MAX_POOL_SIZE_ODS | Sandbox Admin | 每个Ed-Fi Sandbox Admin容器对每个不同ODS数据库的最大连接数 |
NPG_SANDBOX_MAX_POOL_SIZE_ADMIN | Sandbox Admin | 每个Ed-Fi Sandbox Admin容器对EdFi_Admin数据库的最大连接数 |
NPG_SANDBOX_MAX_POOL_SIZE_SECURITY | Sandbox Admin | 每个Ed-Fi Sandbox Admin容器对EdFi_Security数据库的最大连接数 |
NPG_SANDBOX_MAX_POOL_SIZE_MASTER | Sandbox Admin | 每个Ed-Fi Sandbox Admin容器对'postgres'默认数据库的最大连接数 |
如需移除PGBouncer,需进行以下更改:
pb-admin和pb-ods*服务admin和api服务,将数据库环境变量(ODS_POSTGRES_HOST和ADMIN_POSTGRES_HOST)从pb-ods和pb-admin更改为指向db-ods和db-adminPOSTGRES_PORT环境变量指向5432db-admin和db-ods服务上暴露端口(注意这些端口应独立)Ed-Fi联盟欢迎社区贡献代码。更多信息请参见:
版权所有 (c) 2024 Ed-Fi Alliance, LLC及贡献者。
根据Apache License, Version 2.0("许可证")授权。
除非适用***要求或书面同意,否则根据许可证分发的软件按"原样"分发,不提供任何明示或暗示的保证或条件。详见许可证以了解具体的权限和限制。
有关其他版权和许可证通知,请参见NOTICES。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务