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
这里要注意,一定要看指定版本的文档,否则会有意想不到的报错!友情提示!!!
第一步:需要准备的环境:
Software | Required 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