从源代码构建 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.tmplmake/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