本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
此目录包含创建生产就绪的 Portus Docker 镜像所需的所有资源。
本仓库的 master 分支包含从 master 分支构建 Portus 所需的文件,标记为 head。其他分支用于从更稳定的分支构建 Portus,命名格式为 portus-<release>。
此外,请注意部署方式已发生较大变化:
head),Portus 使用 Puma。本文档包含 Puma 部署的说明。如需了解其他版本的部署方法,请参考对应分支的此文件。
SUSE 容器团队重视安全,因此我们做出以下决策:
production 环境,默认启用 SSL。可通过将环境变量 PORTUS_CHECK_SSL_USAGE_ENABLED 设置为 false 禁用 SSL,但不推荐此操作。SUSE 容器团队持续自动化 Portus 及此镜像的发布流程,确保其保持最新和安全。
部署此镜像时,请确保在运行时添加所有必需的密钥和证书,而非将其添加到 Docker 镜像中。
此镜像基于 openSUSE 42.2,通过 SUSE 容器团队在 开放构建服务 顶级项目及子项目(每个 Portus 分支对应一个子项目)中构建的 RPM 包安装 Portus。
此镜像使用 Puma 作为 Web 服务器,仅绑定到 3000 端口。
此 Docker 镜像包含一个 init 脚本,负责以下操作:
/certificates 目录下所有 .crt 文件下文将详细说明这些步骤。
Portus 的状态存储在 MariaDB 数据库中,因此此 Docker 镜像为无状态。
此镜像包含自定义 init 脚本,负责配置外部数据库。
脚本将持续尝试连接数据库 90 秒,每次失败后暂停 5 秒。若数据库无法连接,容器将退出并显示错误信息。
脚本会通过常规的 Rails 流程创建 Portus 数据库并完成初始数据填充。
当上游项目引入新的数据库迁移时,数据库将自动迁移。
Portus 需要 SSL 密钥和证书以通过 HTTPS 提供内容,这些文件必须位于容器的 /certificates 目录中。此外,部署者需设置环境变量 PORTUS_PUMA_TLS_KEY 和 PORTUS_PUMA_TLS_CERT。注意,该密钥还用于签署 JWT 令牌,以验证 Docker 客户端与 Registry 的身份。
当 Registry 使用 TLS 进行安全防护时,还需添加 Registry 的证书。Registry 证书必须放在 /certificates 目录中,此镜像的 init 脚本会自动导入扩展名为 .crt 的证书。
此镜像还支持通过 Docker 密钥 设置部分环境变量。具体而言,设置 PORTUS_DB_PASSWORD_FILE、PORTUS_PASSWORD_FILE、PORTUS_SECRET_KEY_BASE_FILE、PORTUS_EMAIL_SMTP_PASSWORD_FILE 和 PORTUS_LDAP_AUTHENTICATION_PASSWORD_FILE 为密钥路径,将自动分别用这些文件的内容设置 PORTUS_DB_PASSWORD、PORTUS_PASSWORD、PORTUS_SECRET_KEY_BASE、PORTUS_EMAIL_SMTP_PASSWORD 和 PORTUS_LDAP_AUTHENTICATION_PASSWORD。
所有日志输出到 stdout 和 stderr,便于按常规方式处理此镜像的日志。
可使用现有的 Docker 镜像编排解决方案部署此镜像。更多示例可参考 Portus 源码的 examples 目录。
Portus 使用 crono 处理部分后台任务。也可通过此镜像执行该脚本,只需将环境变量 PORTUS_INIT_COMMAND 设置为 "bin/crono"。
以下是完整的环境变量列表:
安全相关设置:
PORTUS_SECRET_KEY_BASE:可使用 openssl rand -hex 64 生成,或通过 PORTUS_SECRET_KEY_BASE_FILE 提供 Docker 密钥。PORTUS_KEY_PATH:证书密钥路径,Portus 用于与 Docker Registry 进行身份验证。PORTUS_PASSWORD:隐藏用户 portus 的密码,可使用 openssl rand -hex 64 生成,或通过 PORTUS_PASSWORD_FILE 提供 Docker 密钥。PORTUS_PUMA_TLS_KEY:Puma 要使用的 TLS 密钥。PORTUS_PUMA_TLS_CERT:Puma 要使用的 TLS 证书。PORTUS_CHECK_SSL_USAGE_ENABLED:设为 false 可完全禁用 SSL。数据库相关设置(详见 配置数据库):
PORTUS_DB_ADAPTER:数据库类型,支持 postgresql 和 mysql2,默认值为 mysql2。PORTUS_DB_HOST:运行 MariaDB(或 Postgres)数据库的主机。PORTUS_DB_USERNAME:要使用的数据库用户。PORTUS_DB_PASSWORD:数据库用户密码,可通过 PORTUS_DB_PASSWORD_FILE 提供 Docker 密钥。PORTUS_DB_DATABASE:Portus 数据库名称。PORTUS_DB_PORT:可选数据库端口号。PORTUS_DB_POOL:连接池数量。PORTUS_DB_TIMEOUT:请求超时值。部署相关设置:
PORTUS_MACHINE_FQDN_VALUE:Portus 实例的完全限定域名(例如:portus.example.com)。Puma 微调设置:
PORTUS_PUMA_WORKERS:要生成的 Puma 工作进程数,默认值为 1。PORTUS_PUMA_MAX_THREADS:要创建的 Puma 最大线程数,默认值为 1。RAILS_SERVE_STATIC_FILES:设为 true 可让 Puma 提供静态文件,默认值为 false(此时需在容器前部署 NGinx 等服务)。执行其他命令:
PORTUS_INIT_COMMAND:可设置要运行的命令,例如要运行 crono,可设为 "bin/crono"。PORTUS_BACKGROUND:设为 true 表示要执行的进程是 rails 运行器 bin/background.rb(即后台进程),相当于 PORTUS_INIT_COMMAND=rails r /srv/Portus/bin/background.rb 的快捷方式。还可传递更多环境变量以配置 Portus,详见 此处。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429