docker nginx部署web应用_小白都能看懂的前端部署(docker+nginx+jenkins)

本文介绍了如何利用Docker、Nginx和Jenkins搭建前端自动化部署流程。开发者提交代码到指定分支后,会自动触发Jenkins进行持续集成和部署。部署完成后,通过Nginx反向代理展示页面,并通过邮件通知结果。同时,详细阐述了Docker镜像的选择、docker-compose的安装以及Jenkins和Nginx的配置过程。
摘要由CSDN通过智能技术生成

e2dec6b14e23fa312c139a7c053abd72.png

前言

随着devops的发展,前端部署变得越来越简单,可控性也越来越高,本文基于docker?+nginx+jenkins来实现前端自动化部署流程,具体实现效果为开发人员在本地开发,开发push提交代码到指定分支,?自动触发jenkins进行持续集成和自动化部署。部署完成后会收到邮件的通知,构建成功后会将打包后的文件上传到服务器,通过nginx反向代理展现页面。构建失败则打印出错误日志。而docker?是我们整个部署方案中很重要的一块,由docker构建镜像,保证了环境的统一??。

部署目标

•搭建docker?、nginx、jenkins环境•配置docker-compose.yaml

搭建环境

本文选用centos7云服务器

docker环境

如果大家对dockerdocker-compose有不了解的地方,可以去恶补一下这方面的知识,这边就不详细赘述了。

在安装 docker 之前,我们先来了解一下docker的版本定义,这有利于我们在之后的开发中选择和使用合适的 Docker 版本。对于docker来说,它分为两个系列:

•社区版(ce)•企业版(ee)

社区版和企业版的区别无非就是企业版收费,提供额外的服务。

 sudo yum install yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo \   https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce

不出意外的话 输入docker -v出现图下页面就代表成功了

5edfd4c9862b980982d8ecae827c86ac.png

 sudo systemctl enable docker // 设置开机自启  sudo systemctl start docker //  启动docker

安装docker-compose

一个完整的应用程序,往往都不是一个容器组成的,而是通过容器组成一个容器群。一个容器群的搭建需要执行太多命令,更重要的是需要考虑太多应用和容器间的依赖关系处理,是一波令人头大的操作。docker-compose正是解决多个容器之间管理的问题。

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

输入命令安装docker-compose,安装完成后提升权限

udo chmod +x /usr/local/bin/docker-compose

执行完上面命令后,不出意外输入docker-componse -v显示如下页面

44208e9b2f27dc4cf7bb1fd88dce81e6.png

安装jenkins和nginx环境

jenkins和nginx环境从远端docker镜像库拉取

docker pull jenkins/jenkins:ltsdocker pull nginx

在这里推荐安装jenkins/jenkins这个镜像,jenkins镜像是docker官方维护的镜像,已经很久没有维护了,jenkins/jenkins是jenkins官方维护的库。更新频率非常的到位。后面跟lts表示长期支持的意思。

dc1ccef45158bbee0549eae10eec89f3.png安装完成后执行docker images可以清晰的看到当前docker下存在的镜像。

编写docker-compose目录

这边的目录结构你可以理解为搭建环境所需要的配置文件和挂载卷等,与搭建一个软件开发项目类似,提倡将 Docker Compose项目的组成内容聚集到一个文件目录中,这样更利于我们进行管理和迁移。目录结构如下?

+ compose  - docker-compose.yml  // docker-compose执行文件+ nginx   + conf.d    - nginx.conf        // nginx配置+ jenkins  - jenkins_home       // jenkins挂载卷+ webserver              -static              //存放前端打包后的dist文件

为了简单,我这边的目录结构直接放在home下面,当然,你也可以新建一个新的目录。

3d29d12d247df429c7ed0ffa2e4a5fc1.png

编写docker-compose.yml

version: '3'services:                                      # 集合  docker_jenkins:    user: root                                 # 为了避免一些权限问题 在这我使用了root    restart: always                            # 重启方式    image: jenkins/jenkins:lts                 # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)    container_name: jenkins                    # 容器名称    ports:                                     # 对外暴露的端口定义      - 8080:8080      - 50000:50000    volumes:                                   # 卷挂载路径      - /home/jenkins/jenkins_home/:/var/jenkins_home  # 这是我们一开始创建的目录挂载到容器内的jenkins_home目录      - /var/run/docker.sock:/var/run/docker.sock      - /usr/bin/docker:/usr/bin/docker                # 这是为了我们可以在容器内使用docker命令      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose  docker_nginx:    restart: always    image: nginx    container_name: nginx    ports:      - 8090:80      - 80:80      - 433:433    volumes:      - /home/nginx/conf.d/:/etc/nginx/conf.d      - /home/webserver/static/jenkins/dist/:/usr/share/nginx/html

编写nginx.conf

server{  listen  80;  root /usr/share/nginx/html;  index index.html index.htm;}

启动docker-compose

回到compose目录下

docker-compose up -d

输入docker ps查看容器的情况85efef4bd93fd551e649dac4f90405cb.png如上图所示,up状态表示已启用,不出意外浏览器ip地址加上端口号8080

ba845961e0c7a7b635a96127b6afdc11.png这边注意哈,你的密码不在/var/jenkins/jenkins_home/下,在当初配置docker-compose.yml中的volumes/home/jenkins/jenkins_home/

4c6f3f6b68c4b0426f461ea14f5da43b.png拿到密码进入后,安装推荐的插件

安装jenkins插件

在此之前,先准备一个vue-cli生成的vue项目,将项目放到gitlab中。

•jenkins安装必要的插件gitlabPublish Over SSHnodejs

f0d03095d3b380976d5e0a86f10a8936.png点击直接安装进行安装插件。安装完成后配置nodejs环境和ssh参数 在首页选择global tool Configuration>NodeJS选择自动安装和对应的nodejs版本号,选择成功后点击保存556510c3916247444f50e53d357e9326.png配置ssh信息,Manage Jenkins>configure System填写服务器的相关信息08b575c39cf7cf1973d2ae3b6625d5e0.png

jenkins与gitlab集成

生成密钥

•在服务器中生成ssh密钥(如果已经存在不需要生成)

7f508ea81edd3862309bc2ebef9d3e45.png生成命令

ssh-keygen -t rsa

将生成的私钥 id_rsa添加到jenkins凭据中e81e98011d17fc8e4998d6d51d5d01be.png

35055eea16c54b9ae53bc441b59f2117.png登陆gitlab,在gitlab中配置id_rsa.pub公钥

3b287ed7739fa265bbd5687ee1653ada.png

新建项目

准备完毕后,开始新建一个任务,选择新建item>freestyle project构建一个自由风格的项目。

61f48b27454bcb3d9f6bc5ba91a826ec.png

源码管理

新建完成后,在源码管理中配置git信息,credentials选择我们刚刚添加的凭证

39b8d2480a61bc2804d9261554a925dd.png

构建触发器

构建触发器中选择我们触发构建的时机,你可以选择队友的钩子,比如push代码的时候,Merge Request的时候等。

d404b67f3e83758c6c001e130d3f4e1b.png点击高级选项找到secret token>Generate生成一个token值

4a1894938a4487f1de21ff600e28c364.png你在这边配置成功后,还需要到gitlab中增加对应的钩子。记下上图的webhookURL(红线框出)和secret token值,到gitlab中进行配置。

42a711005c272fb839652208121fac44.png

构建环境

构建环境选择node环境949e3e4035be0ca42e0d0929286f66b0.png

构建

配置node打包命令,打包完成后将压缩后的dist文件上传到远程服务器上,remote directory是移除static下的文件,这边的webserver目录就是一开始编写的目录里e58c39fdc1cc3ed1e66b10f0b7d4aa7c.png此时,我们的配置也算是告一段落了,点击保存。修改代码,git push ,你会发现项目已经自动开始构建了?

12dd73c09ddfead499d798671aebf995.png

❤️感谢大家

1.如果文章对你有帮助,请动动你的小手指点个赞?吧,你的赞是我创作的动力。

2.关注公众号「前端精英」!不定期推送高质量文章哦。

de882dcef52aed46252d10b82119152c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值