亮点

  • 采用shell自定义脚本,控制集成部署环境更加方便灵活
  • 如果服务器更换,重新部署的工作量会比较小

准备工作

首先我们得有一台服务器。我这里用的是阿里云ECS,华东节点。具体的购买操作的话百度会有教程。购买完成以后你会有一个公网的ip,以及一个通过ssh登录服务器的密码。

关于Docker的话,如果不了解的可以先去看文档。Docker的Container(容器)就像轮船上的集装箱。集装箱各自装着各自的货物,互不影响。比如一个Redis服务,一个Mongodb服务,都可以放到一个单独的Container(集装箱)里面。而这些容器,又依赖一个执行环境。这个执行环境就是Docker所说的Image(镜像)。每一个Container管理着自己的生命周期。

Jenkins是一款由Java开发的开源软件项目,主要是用来持续集成的。相当于就是预先写好脚本,调试成功之后,下一次如果再需要部署的时候就会自动执行上一次存储的脚本,无需再修改。

安装 Docker

参考文档

卸载旧版本

$ sudo apt-get remove docker docker-engine docker.io

使用APT安装

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

$ sudo apt-get update
$ sudo apt-get install     apt-transport-https     ca-certificates     curl     software-properties-common

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# 官方源# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

然后,我们需要向 source.list 中添加 Docker 软件源

$ sudo add-apt-repository     "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu     $(lsb_release -cs)     stable"# 官方源# $ sudo add-apt-repository     # "deb [arch=amd64] https://download.docker.com/linux/ubuntu     # $(lsb_release -cs)     # stable"

以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要测试或每日构建版本的 Docker CE 请将 stable 改为 test 或者 nightly。

安装 Docker CE

更新 apt 软件包缓存,并安装 docker-ce:

$ sudo apt-get update$ sudo apt-get install docker-ce

使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装:

$ curl -fsSL get.docker.com -o get-docker.sh$ sudo sh get-docker.sh --mirror Aliyun

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的 Edge 版本安装在系统中

启动 Docker CE

$ sudo systemctl enable docker$ sudo systemctl start docker

建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

$ docker run hello-worldUnable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-worldd1725b59e92d: Pull completeDigest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788Status: Downloaded newer image for hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.    (amd64) 3. The Docker daemon created a new container from that image which runs the    executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it    to your terminal.To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID: https://hub.docker.com/For more examples and ideas, visit: https://docs.docker.com/get-started/

若能正常输出以上信息,则说明安装成功。

镜像加速

如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker 国内镜像加速。

阿里云镜像加速

安装 docker-compose

参考文档

运行此命令以下载Docker Compose的当前稳定版本

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

对二进制文件应用可执行权限

$ sudo chmod +x /usr/local/bin/docker-compose

查看版本

$ docker-compose --version

安装 jenkins

在安装jenkins我选择了使用docker-compose docker-compose 是一个用来把 docker 自动化的东西 有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自动化的完成。

首先我们需要在服务器上创建一个目录机构 (我只是做个演示)

/home/jenkins     - docker-compose.yml     - jenkins-home

接下来我们来编写 docker-compose.yml 安装jenkins

version: '3'    # 指定 docker-compose.yml 文件的写法格式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-compose命令

我们需要进入到 jenkins 目录下执行:

$ docker-compose up -d

这个命令会帮我们自动拉取镜像并配置

不出意外你现在可以打开你的服务器地址 http://xxxxxxx:端口号 就能看到这个界面:

打开你所创建的jenkins目录进入到jenkins-home/home/jenkins/jenkins-home

进入 secrets 目录

$ cat initialAdminPassword

然后把里面的文本复制出来填到管理员密码中

接下来需要安装两个插件

NodeJS PluginPublish Over SSH

然后我们滑到最下方

开始创建项目部署

官方参考

1、首先在项目根目录创建一个nginx.conf文件

user  nginx;worker_processes  1;error_log  /var/log/nginx/error.log warn;pid        /var/run/nginx.pid;events {  worker_connections  1024;}http {  include       /etc/nginx/mime.types;  default_type  application/octet-stream;  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent" "$http_x_forwarded_for"';  access_log  /var/log/nginx/access.log  main;  sendfile        on;  keepalive_timeout  65;  server {    listen       80;    server_name  www.lovelp.xin;  # 域名    location / {      root   /app;  # 指向目录      index  index.html;      try_files $uri $uri/ /index.html;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {      root   /usr/share/nginx/html;    }  }}

2、在项目根目录创建一个Dockerfile文件

FROM nodeWORKDIR /appCOPY package*.json ./RUN npm install -g cnpm --registry=https://registry.npm.taobao.orgRUN cnpm installCOPY ./ /appRUN npm run build:prodFROM nginxRUN mkdir /appCOPY --from=0 /app/dist /appCOPY nginx.conf /etc/nginx/nginx.conf

3、在项目根目录创建一个setup.sh来帮助我们执行脚本

#!/usr/bin/env bashimage_version=`date +%Y%m%d%H%M`;# 关闭shop_admin容器docker stop shop_admin || true;# 删除shop_admin容器docker rm shop_admin || true;# 删除shop/admin镜像docker rmi --force $(docker images | grep shop/admin | awk '{print $3}')# 构建shop/admin:$image_version镜像docker build . -t shop/admin:$image_version;# 查看镜像列表docker images;# 基于shop/admin 镜像 构建一个容器 shop_admindocker run -p 9527:80 -d --name shop_admin shop/admin:$image_version;# 查看日志docker logs shop_admin;#删除build过程中产生的镜像    #docker image prune -a -fdocker rmi $(docker images -f "dangling=true" -q)# 对空间进行自动清理docker system prune -a -f

4、最后我们需要在jenkins上创建项目

最后我们就可以愉快的 Build Now 了

jenkins docker 自动部署 构建_jenkins+docker+vue项目的自动部署环境相关推荐

  1. php项目webpack打包,Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理

    这次给大家带来Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理,Vue项目webpack打包部署时Tomcat刷新报404错误问题处理的注意事项有哪些,下面就是实战案例,一起 ...

  2. vue 项目中 自动生成 二维码

    vue 项目中 自动生成 二维码 ​ 最近在写一个vue项目,要求根据卡号可以自动生成一个二维码,并渲染在指定位置,因为第一次做类似业务,小编在网上找了找,发现了很多,具体起来主要用的就两种: QRc ...

  3. Vue项目webpack打包部署到服务器

    Vue项目webpack打包部署到服务器 这篇博文主要说的就是我今天遇到的问题,而且在经过我的询问,好多人在打包部署的时候都遇到了一些问题,下面就来说下,如何将Vue项目放置在服务器上,这里以Tomc ...

  4. Vue项目的打包\部署\优化

    Vue项目的打包\部署\优化 如果有帮助到你 麻烦点个赞或者 收藏 +关注 哟 以后会经常发布一些干货文章 我只是一个前端小菜鸟,大佬勿喷! 一.nginx 开启 gzip 理论上,nginx 开启 ...

  5. vue项目中自动生成二维码

    vue项目中自动生成二维码 我们在做vue项目时,很多时候要用到生成二维码的功能,今天给大家介绍一个有前端生成二维码的小例子: 1.安装vue-qr: npm isntall vue-qr --sav ...

  6. vue项目运行自动打开浏览器,默认设置为google浏览器的方法

    vue项目运行自动打开浏览器,默认设置为google浏览器. 设置方法就是把google浏览器设置为电脑默认浏览器,具体如下:

  7. vue项目nginx服务器部署详细流程....

    vue项目nginx服务器部署 (1)前言 将自己做的vue项目部署到服务器上,这里我采用的工具是Nginx,Nginx是一款轻量级的web服务器.反向代理服务器,由于它的内存占用小,启动快,高并发能 ...

  8. docker运行jar包_Jenkins+Docker+Springboot单机版持续集成部署

    Jenkins+Docker+SpringBoot持续集成流程说明 安装配置jenkins 安装jenkins可直接官网下载对应的jar包直接运行,也可使用docker运行,下载完后直接运行,并下载d ...

  9. 使用Docker安装的Nginx代理前端vue项目

    本篇文章主要是记录 一次使用 docker成功部署nginx之后,代理(部署)静态资源或前端vue项目,遇到的2个问题(docker安装nginx参考) 1.前置条件,防火墙关闭,开放80端口,doc ...

最新文章

  1. CentOS7服务器Docker构建ubuntu镜像出错invalid argument
  2. mongodb--常用命令
  3. 聚集索引和非聚集索引(整理)
  4. 【招聘(深圳)】TCL通讯科技控股有限公司
  5. Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)
  6. “数学不行,干啥也不行!”CTO:基础差的程序员,你不知道有多难!
  7. linux用户和组2
  8. 7天连锁酒店郑南雁:顺势创业者无为管理人
  9. 基于FPGA的关于flash一些学习记录
  10. python爬虫万能代码-python网络爬虫源代码(可直接抓取图片)
  11. Android 微信人脸识别+微信二维码
  12. 群晖服务器文件管理套件,群晖drive套件的使用教程
  13. 国产AIoT SoC芯片
  14. 跨步电压和接触电压的区别及联系
  15. Mac如何卸载系统自带软件?macbook系统软件怎么删除?
  16. 用eclipse europa开发web service服务 - 东写西读终见大海无量 - JavaEye技术网站
  17. [生存志] 第87节 张仪犀首纵横大战
  18. 【算法基础】一维前缀和 + 二维前缀和
  19. 怎样删除office2019拥有多个都需要激活的授权信息
  20. 消融实验(ablation experiment)

热门文章

  1. 监听输入 vue_深度对比vue与react创建APP的差别,值得收藏
  2. Java并发编程-volatile关键字介绍
  3. github中删除已建仓库(二)
  4. 服务器环境~某个页面无法访问的处理
  5. TCP源端口选择算法与列维模型
  6. 外媒称新浪面临与雅虎一样的问题 或被阿里廉价收购
  7. 读《大学之路》有感①
  8. jquery表单数据反序列化为字典
  9. 操作系统复习笔记(四)
  10. vue2.0 点击跳转传参--vue路由跳转传参数