docker registry push 覆盖_采用docker+jenkins+nginx_proxy部署多项目环境

f27ee5c599a43700783eb05c78db50ee.png

随着DevOps理念和敏捷理念的发展,我们希望通过自动化技术,加快项目的迭代。尤其是当使用微服务方案后,面临在大量的项目构建和部署工作,借助于jenkins的持续集成,可以快速把应用打包成docker镜像,实现自动部署。

emmmm,最近在自己的服务器上,利用docker+jenkins+nginx_proxy,搭建了一套多项目自动化部署的网站,大致流程图如下。

e06f3d0ceb62174d7e5d14ed1d4f1db4.png
图片来源:https://www.jianshu.com/p/358bfb64e3a6

1、开发人员提交代码到gitlab。
2、gitlab将代码变动提交到jenkins上(这一步可后续补上)。
3、jenkins进行Dockerfile自动化构建项目。
4、push项目镜像到阿里云镜像仓库。
5、命令远程服务端执行shell脚本,拉取前一步构建好的阿里云镜像,在本地启动并允许项目容器。
6、将构建结果通知到相关测试人员。

一、准备工作

  • 基本了解docker容器命令及用法(Dockerfile、docker-compose)。
  • 一台安装好docker、docker-composer环境的服务器。
  • 一个gitlab账号,也可以是码云、github
  • 项目文件
  • 部署所需镜像 (后面会提供)
    • nginx_proxy镜像:起到反向代理、负债均衡等等作用。
    • jenkins镜像:起到自动化部署作用。
    • nginx+php(项目镜像,也可以是java、web,根据需要而定)
    • 其他非必须扩展镜像(mysql、redis、mongo等等)。

二、Docker Compose 文件配置

Compose 是用于定义和运行多容器Docker应用程序的工具,通过Compse,你可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有容器。

如果不太了解YML文件配置,可以阅读以下链接先

YAML 入门教程 | 菜鸟教程​www.runoob.com

Compose 使用的三个步骤:

  • 使用Dockerfile定义应用程序的环境
  • 使用docker-compose.yml,定义构成应用程序的服务,这样它们可以在隔离环境一起进行。
  • 执行docker-compose up命令来启动并运行整个程序。

以下是一个完整的docker-compose.yml文件

version

在yml中,简单的配置了一个nginx_proxy容器、项目容器、redis容器、mysql容器。

参数说明:

  • image:拉取所需镜像
  • container_name:容器名称
  • restart:always重启时默认启动
  • environment:环境变量
    • VIRTUAL_HOST:域名,不同项目配置不同域名
    • MYSQL_ROOT_PASSWORD:数据库密码
  • ports:映射端口
  • links:关联网络

配置说明:

nginx_proxy容器:当docker容器发送变化后,会生成 nginx 反向代理配置并且重新加载 nginx,将VIRTUAL_HOST域名信息代理到对应项目容器。

项目容器:集成了php+nginx的项目镜像,nginx_proxy代理到项目容器后,由项目容器里的nginx去调用php文件。

redis容器、mysql容器:作为项目文件需要的扩展镜像。

执行下命令并访问

打印网页信息​phpinfo.birdnight.cn
docker-compose up 
docker ps

当终端正常显示docker进程,页面正常显示,那么手动构建流程顺利完成。

27b5754a750c8e6a6a1d05cda59eeb8b.png

三、jenkin安装、配置

运行并安装jenkins

docker pull jenkins/jenkins
docker run -d -p 9001:8080 --name jenkins jenkins

9001可以换成一个没有被用过的端口号,阿里云服务器的话,还需要取开放下端口号,并查看docker的运行情况,如下图所示。

8f6b013886479ae6449760ddbae5fc89.png

安装完成后,访问http://ip:端口号,会出现如下图的页面

d11032281480e67a5279f1545389fb1a.png

选择第一个进行安装,并新建一个账号

e45c910820f556fc058304a4824be85c.png

如下图,至此jenkins已经安装完毕。

7bc7f99b106b6888891c6dc842b2d1a2.png

接下来需要对Jenkins进行一些配置,进入系统管理->系统配置,找到SSH remote hosts、Gitlab,添加服务器进行配置和gitlab账号,并connection成功,如下图。

620baac4727b8a4ebe99f6466221edbe.png

f99c3d091a6d4f8421c66d13e8cfbecf.png

最后拉到最后,配置cloud configuration信息,将自己服务器的docker服务端口2376开放出来,并connection成功,如图所示。

312f68dade0ce9675cde079ba5fdddb8.png

四、自动化构建配置

这是一个简单的项目部署文件,可以配置在自己的gitlab或者码云上。

https://gitlab.com/gitlab_xin/phpinfo.git​gitlab.com
463e8e5093b90e8dc035940ca046bb2e.png

gitlab鑫 / phpinfo

gitlab鑫 / phpinfo​gitlab.com
463e8e5093b90e8dc035940ca046bb2e.png

1、选择第一个进行配置构建项目

de72fe62003b3aaf5363c5df8f5711e9.png

2、按下图信息进行配置。

923877977f977769bd5cd4af12acf6ca.png

配置gitlab凭证,并连接成功。

14034fa5c36ee2b1ddc67b3e839ae537.png

94fa5ea4fb4a5c7856d0751a2174b8ed.png

配置阿里云项目镜像。

10c7dea783d1728f1b9446eeb4caacd1.png

配置shell脚本命令,根据自己服务器目录进行对应修改。

8f07e8945c5a5c69f19fd66ee075a2e9.png

点击应用保存,后进行项目构建。

3、项目构建

出现蓝色图片则表示构建成功

9c4cb34fa3bb8a7c7fc6af815b1bc621.png

构建失败我们可以在控制台进行查看失败原因。

2005c606df0fa6df30f24c43c93cac12.png

4、查看结果,自己gitlab上修改代码后,Jenkins点击构建,项目会进行自动部署。

52624aaa1ff614db29e50a7251b2a022.png


至此,自动化部署大概就是以上的流程,配置虽然比较繁琐,但是部署完毕后,开发起项目后,会变的非常方便,无论是单项目还是多项目,单人还是多人。

当然还可以做很多优化,例如在gitlab加钩子、加载一些证书、负债均衡等等。以上只是将网上的一些大佬的信息整理了下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值