本文章实现最简单全面的Jenkins + Docker + Nginx + Web
一键自动部署项目。步骤齐全,少走坑路。
环境:centos7+git(gitee)
简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用shell脚本实现项目自动拉取打包并运行。
有问题留言,看到会及时回复。
docker安装社区版本CE
yum update
yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install <自己的版本> # 例如:sudo yum install docker-ce-17.12.0.ce
systemctl start docker
systemctl enable docker
docker version
Jenkins中文官网->https://www.jenkins.io/zh/
docker 安装一切都是那么简单,注意检查8080是否已经占用!如果占用修改端口
docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
如果没改端口号的话
安装完成后访问地址-> http://{部署Jenkins所在服务IP}:8080
此处会有几分钟的等待时间。
详情见官网教程->https://www.jenkins.io/zh/doc…
-- 进入Jenkins容器:docker exec -it {Jenkins容器名} bash
-- 例如 docker exec -it jenkins bash
-- 查看密码:cat /var/lib/jenkins/secrets/initialAdminPassword 复制面到输入框里面
进入【首页】–【系统管理】–【插件管理】–【可选插件】
搜索以下需要安装的插件,点击安装即可。
进入【首页】–【系统管理】–【全局配置】,拉到最下面NodeJs安装
注意:版本一定不要太高,此处安装12版本
点击【新建任务】,输入任务名称,点击构建一个自由风格的软件项目
点击【源码管理】–【Git】,输入仓库地址,添加凭证,选择好凭证即可。
点击【构建触发器】–【构建环境】–勾选 Provide Node & npm bin/ folder to PATH
echo $PATH
node -v
npm -v
npm install
rm -rf ./dist/*
npm run build
点击【保存】按钮即可
该功能测试是否能正常部署
点击构建按钮
点击正在构建的任务,或者点击任务名称,进入详情页面,查看控制台输出,看是否能成功部署。
该处日志第一次可能失败,如果失败多尝试几次。
前端部署成功以后需要安装nginx,代理前端地址才可以访问
我们通过yum方式进行安装,方便快捷
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo yum install -y nginx
systemctl start nginx
浏览器访问服务器 + 80端口
vim /etc/nginx/nginx.conf
server {
listen 9999;
server_name localhost;
# Load configuration files for the default server block.
location / {
root /var/jenkins_home/workspace/zx-order-web/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
执行 nginx -s reload
访问前端看是否生效啦