Skip to main content
[ PIER ]

公共仓库(Git)

从任何公共 Git URL 部署 —— 克隆、构建、发布。

Application #git#github#gitlab#public#repository

将 Pier 指向公共 Git 仓库(GitHub、GitLab、Bitbucket、Codeberg、Gitea,任何地方),Pier 克隆它、通过仓库中的 Dockerfile 构建,并运行结果容器。Webhook 友好用于推送部署。开源代码的最简单"我有仓库,部署它"模板。

使用 Pier 部署

  1. 1 打开 Pier 控制台,点击 Add service。
  2. 2 从模板列表中选择 Public Repository。
  3. 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
  4. 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。

什么是公共仓库模板?

给 Pier 公共 Git URL 加上仓库内 Dockerfile 路径,Pier 克隆仓库、构建镜像、 运行容器并用 Traefik 前置它。标准的 webhook 集成意味着每次 git 推送到监视 分支触发新鲜构建和 redeploy。

将其用于带 Dockerfile 的任何公共仓库 —— 你自己的开源项目、你想自托管的 第三方项目、fork、构建到容器的文档站点等。

Pier 如何部署它

你提供:

  • 公共 Git URL(HTTPS 克隆 URL)
  • 分支(或标签 / commit SHA)
  • 仓库内 Dockerfile 的路径(默认为 /Dockerfile
  • 容器端口和任何 env vars

Pier 执行配置分支的浅克隆,对 Dockerfile 运行 docker buildx build,本地 存储镜像,并用你配置的 env / 端口 / 卷启动容器。BuildKit 层缓存使增量 重新构建快。

在 Pier 中附加自定义域名以通过 Traefik 获得 HTTPS。从服务设置生成 webhook URL 并将其添加到你的 Git 主机以便未来推送自动部署。

何时不要使用本模板

对于私有仓库,使用 git-private-key(SSH deploy key)或 git-github-app (GitHub App auth)。对于无 Dockerfile 的仓库,使用 Railpack —— 它自动 检测并构建。对于无仓库的一次性内联 Dockerfile 容器,使用 Dockerfile 模板。对于已在注册表中的预构建镜像,使用 Docker 镜像。

核心功能

任何公共 Git 主机

GitHub、GitLab、Bitbucket、Codeberg、sourcehut、自托管 Gitea/Forgejo —— 任何带公共可克隆 HTTPS URL 的东西都工作。

Dockerfile 驱动构建

Pier 在配置路径(默认仓库根目录)查找 Dockerfile,并用 BuildKit 构建。与 Dockerfile 模板相同的引擎。

分支 + 路径选择

选择分支和(对于 monorepo)仓库内 Dockerfile 的路径。

Webhook redeploy

Pier 生成 webhook URL;将其添加为 Git 主机上的 webhook,每次推送触发重新构建 + 上线。

通过 Traefik 的 HTTPS

附加自定义域名,Pier 用 Let's Encrypt TLS 前置运行容器。

BuildKit 缓存

重复构建使用 BuildKit 的层缓存;典型增量重新构建在 10-30 秒内完成。

应用场景

开源项目部署

在 GitHub 上找到的带 Dockerfile 的任何 OSS 项目部署。Pier 处理构建 + 主机。

你自己的公共仓库

公共仓库(例如你自己的作品集站点、个人 API)—— Pier 克隆、构建、部署。

文档站点

带可 Dockerfile 构建的文档站点的仓库(Astro、Docusaurus、Hugo、mdBook)。Pier 构建并提供结果。

快速共享演示

与想要尝试项目的同事共享 Git URL —— 他们将其粘贴到 Pier 并运行。

Fork 和部署工作流

Fork 上游项目,将调整推送到你的 fork,通过 Pier 用 webhook redeploy 部署你的 fork。

代码示例

部署公共 GitHub 仓库 text
服务名称:my-app
Git URL: https://github.com/user/repo
分支:main
Dockerfile 路径:/Dockerfile
端口:3000
→ Pier 克隆、构建、部署
Monorepo —— 子文件夹中的 Dockerfile text
Git URL: https://github.com/myorg/monorepo
分支:main
Dockerfile 路径:/services/api/Dockerfile
端口:8000
用于推送部署的 GitHub webhook text
Pier 服务 → 设置 → 复制 webhook URL
GitHub 仓库 → 设置 → Webhooks → 添加:
  URL: https://pier.example.com/webhook/abcd1234
  内容类型:application/json
  事件:仅 push 事件
→ 每次推送到 "main" 触发 redeploy
固定到标签 text
分支:v1.4.0     # 标签在分支字段中工作
→ Pier 检出标签;无意外更新

对比

vs Dockerfile 模板(粘贴内联) 对将迭代的代码使用公共仓库(webhook redeploy)。对无仓库的一次性容器使用 Dockerfile(粘贴)。
vs 私有仓库(deploy-key / github-app 模板) 当仓库不可公开克隆时使用那些模板。当你不需要身份验证时,公共仓库是最简单的路径。
vs Railpack Railpack 也接受 Git URL 但跳过 Dockerfile —— 它自动检测语言。当仓库有你想让 Pier 使用的 Dockerfile 时使用公共仓库;当你没有时使用 Railpack。
vs Docker 镜像(本目录) 镜像运行预构建镜像。公共仓库从源代码构建。管道中的不同点。

常见问题

哪些 Git 主机工作?
任何带公共可克隆 HTTPS URL 的东西。GitHub、GitLab、Bitbucket、Codeberg、sr.ht、Gitea、Forgejo,甚至原始 cgit 实例。
如何部署特定 commit / 标签?
将标签名称(例如 v1.2.3)或 commit SHA 放入"分支"字段 —— Pier 检出它。
仓库能多大?
Pier 进行浅克隆(深度 1)所以即使大型历史也能快速克隆。多 GB 仓库工作树可能减慢上下文上传到 BuildKit;保持 .dockerignore 锐利。
构建参数?
Pier UI 有"构建参数"字段 —— 作为 --build-arg 传递给 docker build。
运行时 env vars?
与其他模板相同的 UI —— 服务上的 env 选项卡。
来自一个仓库的多个服务?
创建多个 Pier 服务,指向相同的 Git URL,带不同的 Dockerfile 路径和端口。
webhook 如何工作?
Pier 为每个服务生成唯一的 webhook URL。POST 到它触发新鲜克隆 + 构建 + redeploy。无负载签名验证(尚);将 URL 视为秘密。

相关服务

在你的 VPS 上部署

将 Pier 指向公共 Git 仓库(GitHub、GitLab、Bitbucket、Codeberg、Gitea,任何地方),Pier 克隆它、通过仓库中的 Dockerfile 构建,并运行结果容器。Webhook 友好用于推送部署。开源代码的最简单"我有仓库,部署它"模板。

部署此服务 →