Harbor 定制页面 和 二次开发指南

harbor的官方地址:https://github.com/goharbor/harbor

想对Harbor进行二次开发,首先要指定一个harbor的版本,这里我们以Harbor:1.6.2为例:

下载指定版本的Harbor:https://github.com/goharbor/harbor/tree/release-1.6.0

查看指定版本的官方文档:https://github.com/goharbor/harbor/blob/release-1.6.0/docs/compile_guide.md

这里要注意,一定要看指定版本的文档,否则会有意想不到的报错!友情提示!!!

第一步:需要准备的环境:

SoftwareRequired Version
docker 1.12.0 +
docker-compose 1.11.0 +
python 2.7 +
git 1.9.1 +
make 3.81 +
golang* 1.7.3 +
*optional, required only if you use your own Golang environment.

注意:这里没有指定操作系统,我是在Centos下做的,在mac是compile是可以的,但是不能install, 看报错是因为mac下没有/var/lib/docker/tmp/****,报no such file***错

环境准备完成后就可以开始了:

第二步:下载代码:

官方的文档是git clone下的代码,由于我公司服务器对外访问受限,所以我都是下载在本机,然后通过xftp拷贝到centos上的。注意版本

第三步:Building and installing Harbor

1. 修改配置:

官方这里是修改配置,但我没有改,也一样运行和访问,这里就跳过了。

2.Build with offical Golang image

1)编译和运行:

这里官方给出了两种方案:第二种方案,我没有成功,所以这里只记录第一种方案:

先拉取go的镜像:

docker pull golang:1.9.2

执行Make命令install

   $ make install GOBUILDIMAGE=golang:1.9.2 COMPILETAG=compile_golangimage CLARITYIMAGE=goharbor/harbor-clarity-ui-builder:1.6.0

这里解释一下,执行的make install命令在makefile中有定义 

执行的是如下命令:

install: compile version build modify_sourcefiles prepare modify_composefile start

这里是把UI JobService AdminService等几个模块,全部编译,build成镜像 等一系列操作,然后start。

因为我是只修改了UI部分,所以我修改了一部署make的代码,只构建也ui的image。

在执行:compiling binary for clarity ui.. 这个过程中特别耗时,不知道它在做什么操作,请了解的请赐教。

还有我在服务器ui_ng目录下直接运行npm run build总是报错,所以我根本就运行不起来,只能通过镜像的方式验证修改的结果,这点比较悲催。

前端代码如下:

登录界面如下:

 前端代码的dockerfile文件:

FROM photon:1.0

RUN tdnf distro-sync -y 
    && tdnf erase vim -y 
    && tdnf install sudo -y >> /dev/null
    && tdnf clean all 
    && groupadd -r -g 10000 harbor && useradd --no-log-init -r -g 10000 -u 10000 harbor 
    && mkdir /harbor/

HEALTHCHECK CMD curl --fail -s http://127.0.0.1:8080/api/ping || exit 1
COPY ./make/dev/ui/harbor_ui ./src/favicon.ico ./make/photon/ui/start.sh ./UIVERSION /harbor/
COPY ./src/ui/views /harbor/views
COPY ./src/ui/static /harbor/static

RUN chmod u+x /harbor/start.sh /harbor/harbor_ui
WORKDIR /harbor/
    
ENTRYPOINT ["/harbor/start.sh"]

这个harbor_ui就是所有前端代码的压缩了。

图片放在/harbor/static下了。它是把./src/ui/static 这里的图片copy过去的。

它是如何把前端代码压缩到./make/dev/ui/harbor_ui这里的,其实我没有找到:

只找到了这样一句命令:不太理解它的意思。

/usr/bin/docker run --rm -v /root/go/src/github.com/goharbor/harbor:/go/src/github.com/vmware/harbor -w /go/src/github.com/vmware/harbor/src/ui golang:1.9.2 /usr/local/go/bin/go build -o /go/src/github.com/vmware/harbor/make/dev/ui/harbor_ui

dev版本 也是默认版本,最后的生成的文件结构,dockfile在这里执行

 构建成功后,我用docker-compose起一个harbor的运行环境,然后修改它的yml文件,把ui的镜像改成dev版本,就能测试我的结果了。

很笨拙。我还没有找到更好的办法,先用再,再研究。

// stop harbor
docker-compose -f ./docker-compose.yml -f ./docker-compose.clair.yml -f ./docker-compose.chartmuseum.yml down

// start harbor
docker-compose -f ./docker-compose.yml -f ./docker-compose.clair.yml -f ./docker-compose.chartmuseum.yml up -d
原文地址:https://www.cnblogs.com/hankuikui/p/10083343.html