本系列主要介绍如何自动化部署咱们的前端和后端项目javascript
本篇主要介绍如何自动化部署vue项目css
下篇讲如何自动化部署nodejs项目html
我这里是mac os,若是你用linux就不会碰到不少下面碰到的问题了。前端
首先咱们把咱们的电脑想象成一台服务器,固然若是你有服务器,也能够直接在服务器上,执行如下操做vue
我这里方便起见,就直接把个人电脑(mac)当作一台服务器,事实证实这里面不少坑!!!java
注意区分如下本地和服务器的区别,其实咱们这里都是咱们的电脑node
咱们在服务器(这里是咱们的mac)上安装dockerlinux
咱们在服务器(这里是咱们的mac)上用docker安装了jenkinsios
咱们本地新建一个vue项目,并推到githubnginx
咱们本地访问服务器上的jenkins,即打开网址http://localhost:8081 (若是是服务器这里localhost换成你服务器的ip)
咱们用jenkins拉了github的项目到jenkins的安装目录里的workspace/
目录
jenkins使用执行shell
跑了命令
npm install
npm run build
复制代码
这里咱们须要给jenkins安装nodejs插件
这里咱们须要安装Publish Over SSH插件,并配置好服务器
把咱们的vue项目打包成镜像vuenginxapp
用这个镜像建立一个容器vuenginxapp
请参考 www.runoob.com/docker/maco…
我这里是mac, 安装成功以后,在状态栏有docker图标
这时命令行输入docker -v
则说明安装成功
题外话:你也能够不经过docker安装,能够参考个人另外一篇文章Mac安装jenkins
hub.docker.com/ 是docker存放image(镜像)的地方,界面以下:
咱们搜索一下要安装的jenkins镜像
注意: 虽然第一个是docker官方维护的版本,但它很长时间没有更新了,是一个过期的版本。因此这里咱们要安装第二个,这个是jenkins维护的
ps:咱们也能够经过命令行搜索,命令是docker search jenkins
新建一个目录jenkins_home,如我这里是
执行命令
docker run --name jenkins_node -d -v /Users/isaacho/Documents/application/docker/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts
复制代码
注意: 这里不要直接复制上面的命令,须要把/Users/isaacho/Documents/application/docker/jenkins_home替换成你新建的目录。一样下面若是出现/Users/isaacho/Documents/application/docker/jenkins_home都须要换成你的目录
等待安装过程。。。,若是能打开http://localhost:8081
则说明安装成功
同时咱们能够看到/Users/isaacho/Documents/application/docker/jenkins_home目录下生成了不少文件
命令解释:
--name jenkins_node 表示你的容器名字叫jenkins_node
-d 表示在后台运行
-v /Users/isaacho/Documents/application/docker/jenkins_home:/var/jenkins_home 表示把咱们新建的jenkins_home目录映射到容器的/var/jenkins_home目录
-p 就是端口映射
浏览器打开http://localhost:8081
,界面以下:
咱们经过如下命令获取管理员密码
cat /Users/isaacho/Documents/application/docker/jenkins_home/secrets/initialAdminPassword
复制代码
点击继续
选择推荐的插件,安装插件,而后等待。。。
点击保存并完成
点击开始使用jenkins
点击系统管理
Publish Over SSH
,并安装
系统管理=》configure system =》拉到最下面
点击 Test Configuration,显示success则说明配置成功,点击保存
若是不成功,说明咱们的电脑没有开启远程登陆
解决方案:
选择系统偏好设置->选择共享->点击远程登陆
上面的hostname即你这里的IP地址
node插件在跑node项目时须要使用,这里先安装好
点击系统管理
等待安装好
项目已经上传到github
咱们用vue-cli3直接建立一个vue项目
注意: 这里须要你的node版本大于8.9 或更高版本
vue create vueclidemoapp
复制代码
修改HelloWorld.vue组件,改写页面,并加入axios发送一个请求
import axios from 'axios';
axios.get('/api', {
params: {},
}).then((res) => {
console.log(res);
});
...
复制代码
界面以下
关于nginx配置请看前端想要了解的Nginx
在项目根目录下新建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;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain application/javascript text/css;
# 虚拟主机server块
server {
# 端口
listen 80;
# 匹配请求中的host值
server_name localhost;
# 监听请求路径
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
include /etc/nginx/conf.d/*.conf;
}
复制代码
在项目根目录下新建Dockerfile
FROM nginx
EXPOSE 80
复制代码
此时你的目录结构是这样
这里我就不演示了,个人这个项目的github地址是https://github.com/repototest/vueclidemoapp
第一个shell命令是build咱们的vue项目,会在项目根目录下生成dist目录
echo $PATH
node -v
npm -v
npm install
npm run build
复制代码
第二个shell命令是用来构建docker镜像和跑docker服务的
它首先会ssh链接到咱们的服务器
docker stop vuenginxapp || true \
&& docker rm vuenginxapp || true \
&& cd /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp \
&& docker build -t vuenginxapp . \
&& docker run -d -p 8083:80 --name vuenginxapp -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf vuenginxapp
复制代码
docker stop vuenginxapp
用于中止vuenginxapp容器
sudo docker rm vuenginxapp
用于删除vuenginxapp容器
cd /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp
进入咱们的项目目录,这里须要改为大家本身的目录,即(yourpath)/jenkins_home/workspace/vueclidemoapp
, yourpath就是上面咱们新建jenkins_home目录时的目录
docker build -t vuenginxapp .
表示build镜像,名称为vuenginxapp
docker run -d -p 8083:80 --name vuenginxapp -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf vuenginxapp
表示已咱们上面的vuenginxapp为镜像生成容器vuenginxapp
详细解释 -d
在后台运行
-p 8083:80
把容器的80端口映射程咱们访问的8083端口,注意80端口是nginx默认的端口号
--name vuenginxapp
容器名称为vuenginxapp
-v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html
把咱们生成的dist目录挂载到容器的/usr/share/nginx/html,/usr/share/nginx/html是nginx默认的http目录
-v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf
把咱们的nginx.conf挂载到容器的/etc/nginx/nginx.conf,/etc/nginx/nginx.conf是nginx默认的配置文件
vuenginxapp
是咱们的镜像名称
即
/usr/local/bin/docker stop vuenginxapp || true \
&& /usr/local/bin/docker rm vuenginxapp || true \
&& cd /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp \
&& /usr/local/bin/docker build -t vuenginxapp . \
&& /usr/local/bin/docker run -d -p 8083:80 --name vuenginxapp -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf vuenginxapp
复制代码
点击当即构建
等待部署。。。
点击这个小圆能够看控制台输出
能够看到咱们的项目被拉到(yourpath)/jenkins_home/workspace
下了
访问http://localhost:8083/
至此咱们成功部署了咱们的vue项目