从源代码构建 Harbor
本指南为开发者提供了从源代码构建和运行 Harbor 的说明。
步骤 1:为 Harbor 准备构建环境
Harbor 以多个 Docker 容器部署,大部分代码使用 Go 语言编写。构建环境需要 Docker、Docker Compose 和 golang 开发环境。请安装以下先决条件
软件 | 所需版本 |
---|---|
docker | 17.05 + |
docker-compose | 1.18.0 + |
python | 2.7 + |
git | 1.9.1 + |
make | 3.81 + |
golang* | 1.15.6 + |
*可选,如果您使用自己的 Golang 环境,则为必需。
步骤 2:获取源代码
git clone https://github.com/goharbor/harbor
步骤 3:构建和安装 Harbor
配置
复制文件 make/harbor.yml.tmpl 到 make/harbor.yml,并进行必要的配置更改,例如主机名、管理员密码和邮件服务器。有关更多信息,请参阅 Harbor 安装与配置。
cd harbor
vi make/harbor.yml
编译和运行
您可以通过以下两种方法之一编译代码
I. 使用官方 Golang 镜像构建
-
构建、安装并启动 Harbor
make install COMPILETAG=compile_golangimage
II. 使用您自己的 Golang 环境编译代码,然后构建 Harbor
-
将源代码移动到
$GOPATH
mkdir $GOPATH/src/github.com/goharbor/ cd .. mv harbor $GOPATH/src/github.com/goharbor/.
-
构建、安装并运行 Harbor
cd $GOPATH/src/github.com/goharbor/harbor $ make install
验证您的安装
如果一切正常,您将看到此消息
...
Start complete. You can visit harbor now.
有关管理 Harbor 实例的更多信息,请参阅 重新配置 Harbor 和管理 Harbor 生命周期。
附录
- 使用 Makefile
Makefile
包含以下可配置参数
变量 | 描述 |
---|---|
BASEIMAGE | 容器基础镜像,默认值:photon |
DEVFLAG | 构建模型标志,默认值:dev |
COMPILETAG | 编译模型标志,默认值:compile_normal(本地 golang 构建) |
TRIVYFLAG | Trivy 模式标志,默认值:false |
HTTPPROXY | Clarity UI 构建器的 NPM http 代理 |
REGISTRYSERVER | 远程 registry 服务器 IP 地址 |
REGISTRYUSER | 远程 registry 服务器用户名 |
REGISTRYPASSWORD | 远程 registry 服务器用户密码 |
REGISTRYPROJECTNAME | 远程 registry 服务器上的项目名称 |
VERSIONTAG | Harbor 镜像标签,默认值:dev |
PKGVERSIONTAG | Harbor 在线和离线版本标签,默认值:dev |
- 预定义目标
目标 | 描述 |
---|---|
all | 准备环境,编译二进制文件,构建镜像和安装镜像 |
prepare | 准备环境 |
compile | 编译 ui 和 jobservice 代码 |
compile_portal | 编译 portal 代码 |
compile_ui | 编译 ui 二进制文件 |
compile_jobservice | 编译 jobservice 二进制文件 |
build | 构建 Harbor docker 镜像(默认值:使用 build_photon) |
build_photon | 从 Photon OS 基础镜像构建 Harbor docker 镜像 |
install | 编译二进制文件,构建镜像,准备特定版本的 compose 文件并启动 Harbor 实例 |
start | 启动 Harbor 实例 |
down | 关闭 Harbor 实例 |
package_online | 准备在线安装包 |
package_offline | 准备离线安装包 |
pushimage | 将 Harbor 镜像推送到特定的 registry 服务器 |
cleanall | 移除二进制文件、Harbor 镜像、特定版本的 docker-compose 文件、特定版本标签和在线/离线安装包 |
cleanbinary | 移除 ui 和 jobservice 二进制文件 |
cleanimage | 移除 Harbor 镜像 |
cleandockercomposefile | 移除特定版本的 docker-compose |
cleanversiontag | 移除特定版本标签 |
cleanpackage | 移除在线/离线安装包 |
示例
将 Harbor 镜像推送到特定的 registry 服务器
make pushimage -e DEVFLAG=false REGISTRYSERVER=[$SERVERADDRESS] REGISTRYUSER=[$USERNAME] REGISTRYPASSWORD=[$PASSWORD] REGISTRYPROJECTNAME=[$PROJECTNAME]
注意:需要在 REGISTRYSERVER 的末尾添加“/”。如果未设置 REGISTRYSERVER,镜像将直接推送到 Docker Hub。
make pushimage -e DEVFLAG=false REGISTRYUSER=[$USERNAME] REGISTRYPASSWORD=[$PASSWORD] REGISTRYPROJECTNAME=[$PROJECTNAME]
清理特定版本的二进制文件和镜像
make clean -e VERSIONTAG=[TAG]
如果 Github 中添加了新代码,git commit TAG 将会更改。最好使用此命令清理先前 TAG 的镜像和文件。
默认情况下,make 进程创建开发构建。要创建 Harbor 的发布构建,请将以下标志设置为 false。
make XXXX -e DEVFLAG=false
在本页中
贡献