Docker
Drone自动化打包镜像至Harbor私有仓库
Drone自动化打包镜像至Harbor私有仓库
上一篇介绍了如何通过docker部署Harbor私有仓库,今天跟大家分享如何通过Drone自动化打包镜像至我们搭建的Harbor私有仓库,流程大致如下
Gitea->Drone->Harbor
一、创建仓库
我们先在Gitea创建我们的代码仓库,然后在Drone面板激活。
二、项目准备
这里我打算部署一个Go项目,大家根据自己实际情况进行准备,访问端口是9922,我们在项目根目录创建一个Dockerfile文件,用于构建镜像
# Version 1.0 FROM alpine:latest # 维护者信息 MAINTAINER hzx790254812@gmail.com # 设置工作目录 WORKDIR /home COPY project-go-api /home/ # 暴露端口 EXPOSE 9922 # 执行命令 ENTRYPOINT ./project-go-api
三、创建镜像项目
我们到自己部署的Harbor仓库创建一个项目镜像,截图如下

四、配置Docker
因为Docker推送镜像默认是走https,由于我部署的镜像仓库是http,所以我们需要修改一下配置,登陆到要推送镜像的服务器上,输入以下命令
vi /etc/docker/daemon.json
输入以下配置,记得修改为自己的ip或者域名,假设我们的Harbor地址是1.1.1.1:8091。
{
"insecure-registries": ["1.1.1.1:8091"]
}重启Docker,配置生效
sudo service docker restart
五、配置Drone配置
由于我们的Harbor仓库是http,所以我们需要添加一行配置
insecure: true
配置如下,假设我们的Harbor地址是1.1.1.1:8091,镜像项目地址是1.1.1.1:8091/docker,这里每次提交镜像会生成两个版本,latest跟Drone自定义生成
kind: pipeline
type: docker
name: project-go-api
#构建步骤
steps:
#构建镜像
- name: build
image: golang:latest
pull: if-not-exists
environment:
GOPROXY: "https://goproxy.cn,direct" # 懂的都懂
volumes: # 缓存 go mod & pkg,可以大幅度提高速度,避免每次都下载
- name: pkgdeps
path: /go/pkg
commands:
- CGO_ENABLED=0 go build -o project-go-api
#推送镜像至镜像仓库
- name: publish
image: plugins/docker
settings:
registry: 1.1.1.1:8091
repo: 1.1.1.1:8091/docker/project-go-api
insecure: true
username: admin
password: admin
use_cache: true
tags:
- latest
- ${DRONE_COMMIT}六、检验
我们尝试提交项目,看看效果


这样我们就成功通过Drone推送镜像到Harbor私有仓库。
0条评论