Springboot+vue项目在docker+Jenkins自动化部署

Springboot+vue项目在docker+Jenkins+GitLab自动化部署

这几天看了很多别的作者写的自动化部署,说实在的都是到某个节点就进行不下去了。。。可能是我某个步骤出来问题吧。。于是在踩了无数坑以后,写下这篇文章记录自己的自动化部署之路hhhhh

docker安装

​ docker安装比较简单,如下:

yum install docker -y

一些常用的docker命令:

service docker restart  // 重启docker服务
service docker stop     // 停止docker服务

docker images //查看镜像
docker pull xxx //拉取镜像
docker rmi imageId  //删除镜像

docker ps //查看docker运行中的容器
docker ps -a // 查看所有容器
docker stop containerId //停止容器运行
docker rm containerId //删除容器运行
docker logs containerId //查看容器日志
docker exec -it containerId /bin/bash  //进入容器内部

Jenkins安装

推荐选择jenkinsci/blueocean这个版本

docker pull jenkinsci/blueocean
 
docker run -d -u 0 --privileged  --name jenkins -p 49003:8080 -v /root/jenkins_gitlab:/var/jenkins_home  jenkinsci/blueocean
  • -u 0
    指的是传入root账号ID,覆盖容器中内置的账号

  • -d

    后台运行(具体其余命令可以查看 Docker 命令详解(run篇)

  • -v /root/jenkins_gitlab:/var/jenkins_home
    指的是 将docker容器内的目录/var/jenkins_home映射到宿主机
    /root/jenkins_gitlab目录上

  • –name jenkins

  • 将容器命名为 jenkins

  • -p 49003:8080
    端口映射,将容器的8080端口映射到宿主机的49003端口

  • –privileged
    赋予最高权限

  • 整体含意
    运行一个镜像为jenkins/jenkinst的容器,命名为jenkins_gitlab,使用账root号覆盖容器中的账号,赋予最高权限,将容器的
    /var/jenkins_home映射到宿主机的
    /root/jenkins_gitlab目录下,映射容器中8080端口到宿主机49003端口
    查看jenkins

执行完成后,等待几十秒,等待jenkins容器启动初始化。可以查看宿主机 ’ /root/jenkins_gitlab ’ 下是否多了很多文件这里访问http://服务器ip:49003 查看jenkins是否启动成功,看到如下界面说明启动成功:

img

docker logs containerId

密码可以在查看,然后开始选择点击左侧建议安装插件,等待插件安装完成后进入界面,则jenkins安装完成。

jenkins设置

安装成功后,自动化部署需要一些必要的插件
在这里插入图片描述

  • Maven Integration plugin

  • Publish Over SSH

  • gitlab

  • Gitlab Hook Plugin

  • NodeJS Plugin

  • 安装以上这几个必要插件,成功后重启,进入全局工具配置
    在这里插入图片描述
    在这里插入图片描述

jdk可以进入jenkins容器内部

docker exec -it “容器id” /bin/bash
echo $JAVA_HOME

在这里插入图片描述
在这里插入图片描述
一一对jdk、maven、nodejs进行全局配置。因为要对vue也进行打包,所以还得去jenkins容器内部进行配置python环境

apk add python
python -V //验证是否成功
pip3 install --upgrade pip

这里有个疑问:安装python3,后面部署没有成功,获取是我的部署还有待优化emmmm

gitlab的安装

首先在linux路径下创建文件夹

mkdir -p /home/gitlab/etc
mkdir -p /home/gitlab/log
mkdir -p /home/gitlab/data

docker pull docker.io/gitlab/gitlab-ce
docker run \
--detach \
--publish 2222:22 \
--publish 8090:8090 \
--publish 8443:443 \
--hostname xxxx \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime:ro \
--name gitlab\
--restart always \
--privileged=true gitlab/gitlab-ce:latest 

启动成功后

vim /home/gitlab/etc/gitlab.rb

##添加这两句话
# 修改http clone时显示的端口
external_url 'http://x.x.x.x:8090'
# 修改ssh clone时显示的端口
gitlab_rails['gitlab_shell_ssh_port'] = 2222

vim /home/gitlab/data/gitlab-rails/etc/gitlab.yml

##修改下面这里
## GitLab settings
  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: xxx
    port: 8090
    https: false

修改完后重启下容器,等待gitlab的初始化,如果是502的话就刷新多几次,进入登陆页面(我也不知道为啥我不能设置初始密码)

获取不到密码如下操作:

docker exec -it 容器id /bin/bash

gitlab-rails console -e production
user = User.where(id:1).first
user.password ='secret_pass'
user.password_confirmation ='secret_pass'
user.save!

保存退出就可以重新登录到gitlab当中

部署springboot项目

继续回到jenkins进入系统配置
在这里插入图片描述

配置gitlab

在这里插入图片描述

选择gitlab api token 然后回到gitlab的用户设置中添加访问令牌复制到API Token中保存后,回到上图点击选择刚刚添加的凭据
在这里插入图片描述
在这里插入图片描述

配置ssh

找到Publish over SSH,点击新增
在这里插入图片描述
在这里插入图片描述

点击高级添加密码后可以点击测试连接,成功则配置成功

新建job

新建springboot项目可以选第一种,我是选择第二种比较简单的构建
在这里插入图片描述

进入配置,添加gitlab项目地址,添加账号,下方修改分支
在这里插入图片描述

找到build进行配置,(其实和线下打包没什么区别了)
在这里插入图片描述
再到构建后操作进行配置,一般我是将build出来的jar包在复制出来到指定的位置,也可以直接cd到挂载出来的jenkins目录下的workspace找到jar包
在这里插入图片描述
下图也是将springboot项目中的dockerfile复制出来进行dockerbuild(记得有个 " . "),然后再进行docker run
在这里插入图片描述
dockerfile文件如下
在这里插入图片描述

docker ps //查看刚刚启动的是否成功
##不成功
doceker logs xxx //查看失败原因

部署vue项目

部署vue

我们换一种构建,我们选第一种来进行构建
在这里插入图片描述

同理添加对应的项目地址
在这里插入图片描述
构建环境
在这里插入图片描述

构建后操作
在这里插入图片描述

大概的意思就是等于线下将vue项目build后放到指定目录后用nginx下进行关联

配置nginx

也可以将nginx配置到docker中

docker pull nginx // 拉取nginx
docker run -d --name nginxtest -p 80:80 nginx // 启个test验证配置
mkdir -p /home/nginx/{conf,html,logs}  // 宿主新建配置文件夹
docker cp nginxtest:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf // 复制配置文件
docker stop nginxtest // 停止nginxtest
docker rm nginxtest // 删除nginxtest
docker run  --name nginx -d -p 80:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs:/var/log/nginx  -v /home/nginx/html:/usr/share/nginx/html nginx // 运行正式nginx并挂载到宿主

感悟&&参考文章

感谢这几位作者写出的思路,对这几天自动化部署提供了极大的帮助,虽然还是出现了各种各样的问题但最终磕磕碰碰的还是勉强的运行成功了,应该还是有可改进的地方,欢迎指正!以下为参考链接:

docker+gitlab+jenkins从零搭建自动化部署

Docker 学习新手笔记:从入门到放弃

docker+gitlab+jenkins从零搭建自动化部署

Docker学习7-jenkins容器内安装python3

CentOS7 Docker安装Gitlab

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值