Harbor 2.11.0 编译流程亲测可用

之前写过一篇文章,编译Harbor 用到的方法比较取巧,需要用Clash梯子,现在重新整理了一个一键编译脚本,以及编译需要的镜像文件,g具体方如下:

一、资源下载

        Harbor 源代码地址:https://github.com/goharbor/harbor

        目前使用的版本是V2.11.0

        镜像地址(由于大小限制,分为上下两部分)

        第一部分下载地址:https://download.csdn.net/download/huangxvhui88/89511135

        第二部分下载地址:https://download.csdn.net/download/huangxvhui88/89511137

        嫌麻烦的--网盘下载地址:

        链接:https://pan.baidu.com/s/1l_7VNBNup5uxgrKnuSjcDQ 
        提取码:H1H2

二、环境搭建

  1. 安装 Docker (26.1.4 以上版本)
(1)安装需要的软件包:

    yum install -y yum-utils device-mapper-persistent-data lvm2

(2)添加Docker的yum源

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)安装新版本Docker

    yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
(4)运行Docker服务
    systemctl start docker
​

        2. 安装Docker-compose

 yum install  docker-compose

        3. 安装go

yum install go

        4. 安装openssl

yum install openssl

        5. 安装git

yum install git

三、修改部分代码

        MakeFile:       

NPM_REGISTRY=https://registry.npmjs.org  改为 NPM_REGISTRY=https://registry.npm.taobao.org

GOBUILDIMAGE=golang:1.22.3 改为 GOBUILDIMAGE=golang:1.22

 make\photon\portal\Dockerfile :

RUN npm install --unsafe-perm 改成 RUN npm install --unsafe-perm --strict-ssl=false

RUN npm install js-yaml@4.1.0 \ 改成 RUN npm install js-yaml@4.1.0 --strict-ssl=false \

RUN cd app-swagger-ui && npm install --unsafe-perm 改成 RUN cd app-swagger-ui && npm install --unsafe-perm --strict-ssl=false

make\photon\prepare\Dockerfile.base

RUN pip3 install pipenv==2022.1.8 
改成:
RUN pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple
RUN pip3 install pipenv==2022.1.8

 make\photon\registry\Dockerfile.binary

FROM golang:1.22.3
改成
FROM golang:1.22  

注:镜像中的 golang:1.22是基于1.22.3生成的

make\photon\trivy-adapter\Dockerfile.binary:

FROM golang:1.22.3
改成
FROM golang:1.22  

注:镜像中的 golang:1.22是基于1.22.3生成的

make\photon\prepare\templates\docker_compose\docker-compose.yml.jinja(按需修改,修改证书对应的地址)

  registry:
        ...
        source: {{data_volume}}/secret/registry/root.crt
        target: /etc/registry/root.crt
改为:
  registry:
        ...
        source: {{data_volume}}/cert/myCertName.crt
        target: {{data_volume}}/registry/myCertName.crt
------------------------------------------------------------
  core:
        ...
      - type: bind
        source: {{data_volume}}/secret/core/private_key.pem
        target: /etc/core/private_key.pem
      - type: bind
        source: {{data_volume}}/secret/keys/secretkey
        target: /etc/core/key
  改为:
      - type: bind
        source: {{data_volume}}/cert/myCertName.key
        target: /etc/core/myCertName.pem
      - type: bind
        source: {{data_volume}}/cert/myCertName.crt
        target: /etc/core/myCertName.crt
-------------------------------------------------------------
    proxy:
        ...
      - {{data_volume}}/secret/cert:/etc/cert:z
改为:
      - {{data_volume}}/cert:/etc/cert:z

四、执行脚本

        build.sh:  编译脚本

#!/bin/bash


#  Search dir path
SEARCH_DIR="./images"
WORK_DIR="/data"
CERT_DIR="./cert"
HOST_ADDR="192.168.1.95"
CERT_PATH="/etc/docker/certs.d/zorelimit.group/zorelimit.group.cert"
KEY_PATH="/etc/docker/certs.d/zorelimit.group/zorelimit.group.key"
ADMIN_PWD="Harbor123456"

ImportDockerFile(){
cd "$SEARCH_DIR"

find . -type f \( -name "*.tar" -o -name "*.tar.gz" \) -print0 | while IFS= read -r -d '' file
do
    echo "find Docker image file name:$file"
    gunzip -c "$file" | docker load 
done
cd -
}

CreateWorkDir(){
	mkdir -p "$WORK_DIR/cert" 
	mkdir -p "$WORK_DIR/database"
	mkdir -p "$WORK_DIR/job_logs"
	mkdir -p "$WORK_DIR/redis"
	mkdir -p "$WORK_DIR/registry"
	mkdir -p "$WORK_DIR/secret"
	mkdir -p "$WORK_DIR/ca_download"
	cp -f $CERT_DIR/* "$WORK_DIR/cert/"
	chmod -R 755 "$WORK_DIR/cert"
	chmod -R 750 "$WORK_DIR/database"
	chmod -R 755 "$WORK_DIR/job_logs"
	chmod -R 755 "$WORK_DIR/redis"
	chmod -R 755 "$WORK_DIR/registry"
	chmod -R 755 "$WORK_DIR/secret"
	chmod -R 755 "$WORK_DIR/ca_download"
	
	chown -R root:root $WORK_DIR
	#sed -i 's|data_volume: *|data_volume: $WORK_DIR|g' make/harbor.yml
}

ChmodShell(){
	chmod 755 make/*.sh make/prepare make/photon/registry/builder make/photon/registry/*.sh
	chmod 755 make/photon/common/*.sh make/photon/exporter/*.sh make/photon/core/*.sh make/photon/core/harbor_core
	chmod 755 make/photon/jobservice/*.sh make/photon/jobservice/harbor_jobservice 
	chmod 755 make/photon/standalone-db-migrator/*.sh  make/photon/db/*.sh make/photon/log/*.sh make/photon/log/logrotate
	chmod 755 make/photon/registryctl/*.sh make/photon/registryctl/harbor_registryctl make/photon/trivy-adapter/*.sh
}

ModifyHarborFile(){
	pwd
	sed -i "s|hostname: .*|hostname: $HOST_ADDR|g" make/harbor.yml
	sed -i "s|certificate: .*|certificate: $CERT_PATH|g" make/harbor.yml
	sed -i "s|private_key: .*|private_key: $KEY_PATH|g" make/harbor.yml
	sed -i "s|data_volume: .*|data_volume: $WORK_DIR|g" make/harbor.yml
	sed -i "s|harbor_admin_password: .*|harbor_admin_password: $ADMIN_PWD|g" make/harbor.yml
	

	sed -i -e 's/\r$//' make/harbor.yml

}

Createspectral(){
	if [ -f ".spectral.yaml" ]; then
		echo "file:.spectral.yaml is exist."
	else
		echo 'extends: [[spectral:oas, all]]

functionsDir: "./tools/spectral/functions"

functions: [requireRequestId]

rules:
  no-$ref-siblings: false
  oas2-valid-schema-example: false

  required-operationId:
    description: must have a operationId.
    given: $.paths[*][*]
    severity: error
    then:
      field: operationId
      function: truthy

  camel-case-operationId:
    description: should be camelCased.
    type: style
    given: $.paths[*][*].operationId
    then:
      function: casing
      functionOptions:
        type: camel

  requestId-required:
    description: must have a requestId parameters.
    given: $.paths[*][*]
    severity: error
    then:
      field: parameters
      function: requireRequestId
' > ".spectral.yaml"
	fi
}

echo "===============================Begin build Harbor========================"
echo "===============================Import Docker Images======================"
ImportDockerFile;

echo "===============================Create Work Dir==========================="

CreateWorkDir;
ChmodShell;

ModifyHarborFile;
Createspectral;
echo "===============================Begin compile=============================="

make compile -e PULL_BASE_FROM_DOCKERHUB=false -e BUILD_BASE=true

echo "================================Begin build=============================="

make build -e PULL_BASE_FROM_DOCKERHUB=false -e BUILD_BASE=true

echo "================================Begin prepare ============================"
make prepare

 start.sh: 启动脚本

#!/bin/bash

make start

五、编译

        修改build.sh 脚本中的变量:

        SEARCH_DIR: 镜像目录

        WORK_DIR:Harbor 工作目录

        CERT_DIR:证书目录

        HOST_ADDR:服务器IP

        CERT_PATH:绑定证书的地址(必须是全路径)

        KEY_PATH:秘钥地址(必须是全路径)

        ADMIN_PWD:默认密码

        修改后直接运行.build.sh 即可

        编译完显示上面所示 即表示编译成功.

六、运行

        执行start.sh 或者使用 自带的make start 即可

        查看镜像状态:

        

尝试访问:

        

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了编译Harbor源码,您可以按照以下步骤进行操作: 1. 首先,您需要下载Harbor的源代码。您可以在GitHub的主页https://github.com/vmware/harbor上找到源代码。您可以通过点击“Download Zip”按钮来下载zip包,然后解压缩它。 2. 接下来,您需要编辑harbor.cfg文件。您可以在解压缩后的源代码目录中找到这个文件。在这个文件中,您需要修改"hostname"参数为您自己的域名或IP地址。请确保将这个参数修改为您服务器的外部可访问IP地址。 3. 然后,您需要准备配置文件。您可以进入源代码目录的Deploy目录,并执行"prepare"命令来生成配置文件。 4. 最后,您可以使用docker-compose来启动Harbor。在源代码目录的Deploy目录中,您可以找到docker-compose.yml文件。您可以使用命令"docker-compose up"来启动Harbor。 需要注意的是,在编译过程中可能会遇到一些问题。例如,在运行"docker-compose up"命令时可能会出现一些警告或错误信息。如果出现这种情况,您可以尝试使用"docker-compose build"或"docker-compose up --build"命令来重新构建镜像。 希望以上信息对您有所帮助。如果您有任何其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Harbor----通过 Harbor 源码进行编译 Harbor](https://blog.csdn.net/redrose2100/article/details/126307695)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vmware harbor源码编译](https://blog.csdn.net/XuYongshi02/article/details/51649895)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值