将程序打包镜像并上传到harbor仓库

打包镜像

打包镜像可以有多种方法。

1. 通过idea的docker插件,配合docker的docker engine API 直接根据ide的dockerfile,创建镜像,并自动上传到docker服务器。docker服务器可以本地部署,也可以直接链接远程服务器。但是要注意,docker engine API服务没有鉴权功能,换句话说,端口一旦开放,谁都能用,极为容易被入侵,建议启动必要的安全措施,如限制内网访问,请求白名单等等。

2. 开发人员把jar包,前端发不好的页面文件夹提供给运维,运维根据开发要求编写dockerfile,然后通过docker build命令进行打包。同样可以在运维本地电脑,也可以直接在服务器操作。

3. 配置CI系统,比方说jenkins,关联gitlab,maven,通过配置流程脚本方式,拉取源码,完成本地打包以及创建镜像操作。

原则上3是最优方案,但是jenkins需要专人维护,且过程脚本需要及时更新,并会占用不少服务器资源,出去大型自运营平台外,怕是很难承担这块成本。

至于1,2,根据需要自行判定吧,有专门的运维,可以让运维搞,没有的话,研发人员直接打包也行。1根据情况还可以优化下,比方说有测试环境,开发人员直接传镜像到测试环境,测试完成后,运维直接在测试环境上给镜像打tag,上传harbor。具体分工看人员配置和资源配置自行定制。

上传Harbor镜像

搭建Harbor比较麻烦,特别是配置证书什么的,这里请自行百度。

我们现在有一个Harbor服务器了,由于域名证书是自行签发,所以需要做些调整。部分步骤可以不操作,具有特殊性,请自行判断场景调整。

1. vim /etc/hosts  增加域名解析到harbor。这里配置  shandong.harbor.cn  172.17.0.22(内网harbor服务器地址,内网带宽大且免费)

2. 由于证书是自行签发,需要修改docker的daemon.json,配置信任。

vim /etc/docker/daemon.json

 重点是插入如下配置。

    "insecure-registries":[
                "shandong.harbor.cn:55443"
    ],

exec-opts配置成systemd是因为装了k8s。

3. 登陆私有harbor

docker login shandong.harbor.cn:55443

然后根据提示录入harbor的用户名和密码。登陆一次后会自动缓存认证信息,不需要重复录入,效果如下:

 这时你的镜像库已经切换到自己的harbor下了。

4. 对image进行打包

docker images查看现有镜像

 test2就是我们用来演示的镜像

docker tag test2 shandong.harbor.cn:55443/dict/test:v1

上述命令就是给test2镜像重新打tag。这里要注意重命名格式:harbor地址/目录/镜像名:版本

执行push的时候会根据这个路径进行推送,同时要注意,登陆用户要有足够的权限。

docker images

 可以看到,创建了一个新的镜像。

执行推送

docker push shandong.harbor.cn:55443/dict/test2:v2

 登陆harbor后台看一眼

镜像已经上传成功。

这样就完成了本地系统打包成镜像,然后提交到harbor私有仓库的过程。

现在程序多是前后台分离,推荐前后台分别打包提交,比较容易维护,且需要弹性扩展时也方便。当然对于硬上k8s的系统来说,为了省资源,你打包到一个镜像里面也可以的。不过这就需要运维单独写dockerfile单独打包上传了。

猜你喜欢

转载自blog.csdn.net/lanwilliam/article/details/125905514