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
這裡要注意,一定要看指定版本的文件,否則會有意想不到的報錯!友情提示!!!
第一步:需要準備的環境:
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。
還有我在伺服器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版本,就能測試我的結果了。
很笨拙。我還沒有找到更好的辦法,先用再,再研究。