Git+Jenkins+docker实现自动部署git拉取代码部署web服务

2022-08-20 12:28:32

Git+Jenkins+docker的持续集成环境构建

工作步骤思路(下图所示)

1.server1搭建好git仓库和用docker搭建好docker镜像仓库

2.server3用git命令去别的共用仓库拉取tale的源码,再上传到git仓库

3.server3制作好nginx配置好的docker镜像(这里我是用java命令去运行jar包的方式,所以不需要安装tomcat去支持)

4.server2部署Jenkins,用插件从server1的git仓库拉取tale的源码文件,再通过ssh发送到server3

5.server2上的Jenkins使用插件等功能用一个脚本在server3上部署tale博客系统到docker容器里然后运行容器

注意事项:

1.注意你自己的部署环境,jdk路径什么的,按照你的环境修改有的操作里面的参数,

2.还有是就是Jenkins下载插件版本兼容的问题,我这里Jenkins的版本是2.238,还有就是jdk跟maven之间的版本兼容问题,可以去网上搜一下它们兼容性

3.Jenkins下载插件的时候有没有下载成功,这个需要注意一下

环境部署

192.168.11.25:gitlab服务器、docker搭建registry镜像仓库

需要安装的软件:git、docker

192.168.11.26:Jenkins服务器

需要安装的软件:git、jdk、maven、tomcat、jenkins.war

192.168.11.27:git客户端、web服务器

需要安装的软件:git、jdk、docker

一、安装部署GitLab服务器或者用git构建代码仓库服务器还有docker的镜像仓库(这里建议服务器4G内存或者以上):192.168.11.25

注意:我这里用的是下载git去部署本地代码仓库服务器

方法一:GitLab服务器

配置YUM仓库

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

yum安装gitlab-ce:yum -y install gitlab-ce

加载配置文件并启动:gitlab-ctl reconfigure

启动服务:gitlab-ctl start

启动服务确定下面的状态正确(如下图所示)

其他的服务操作命令

启动:gitlab-ctl start

关闭:gitlab-ctl stop

重启:gitlab-ctl restart

重载配置:gitlab-ctl reconfigure

查看状态:gitlab-ctl status

然后进入该ip地址进行访问网页

方法二:git构建本地仓库

安装git构建本地仓库

yum -y install git

mkdir mygit.git

cd mygit.git

git --bare init

下载docker并运行registry镜像搭建docker镜像仓库

yum install -y yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce-18.09.6

systemctl start docker && systemctl enable docker

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name rregistry registry

二、客户端安装git下载tale项目包,再上传到gitlab服务器上:192.168.11.27

yum -y install git

生成私钥传给gitlab服务器

 ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa root@192.168.11.25

下载项目包上传

mkdir git

cd git

git config --global user.name "admin"

git config --global user.email "admin@example.com"

git clone https://github.com/otale/tale.git

git clone root@192.168.11.25:/root/mygit.git

用户和密码为登录时的用户和密码

#到克隆的空库下
cd mygit/
#把下载的项目包里面的文件拷贝进来
mv ../tale/* ./
#添加当前目录全部文件提交上传
git add .
git commit -m "add project tale"
git push origin master

三、安装配置Jenkins服务器:192.168.11.26

1.安装配置好jdk

tar zxf jdk-8u91-linux-x64.tar.gz

mv jdk1.8.0_91 /usr/local/jdk1.8

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

source /etc/profile

查看java版本查看是否安装成功:java -version

2.安装配置maven

tar zxf apache-maven-3.6.3-bin.tar.gz

mv apache-maven-3.6.3 /usr/local/maven3.6.3

vim /etc/profile

export MAVEN_HOME=/usr/local/maven3.6.3
export PATH=$MAVEN_HOME/bin:$PATH

source /etc/profile

查看是否安装成功:mvn -v

3.安装配置好tomcat

tar zxf apache-tomcat-8.5.55.tar.gz

mv apache-tomcat-8.5.55 /usr/local/tomcat8

/usr/local/tomcat8/bin/startup.sh

访问网页8080端口查看是否安装成功(如下图)

4.部署Jenkins到tomcat

下载jenkins.war文件把它移动到安装tomcat的webapps目录下(我这里的目录路径是/usr/local/tomcat8/webapps/)

mv jenkins.war /usr/local/tomcat8/webapps/

到安装tomcat的webapps目录下用工具安装

cd /usr/local/tomcat8/webapps/

java -jar jenkins.war --httpPort=8080

然后访问网页8080端口的jenkins目录(如下图)

系统管理—》插件管理—》高级

配置站点源(如下图)

http://updates.jenkins.io/update-center.json

http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

这两个网址都可以,点击提交再立即获取

然后点击可选插件搜索插件进行下载安装

系统管理—》插件管理—》可下载镜像

需要下载的插件

Localization: Chinese (Simplified)

Maven Integration plugin

Publish Over SSH

Git client

Git Parameter

5.下载git工具(因为需要去服务器下拉代码)

yum -y install git

6.最好做下其他两台计算机的免密登录(这里在Jenkins网页配置上也会做)

 ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa root@192.168.11.25

ssh-copy-id -i /root/.ssh/id_rsa root@192.168.11.27

四、部署web服务器(这里用docker实现):192.168.11.27

1.下载安装docker

yum install -y yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce-18.09.6

systemctl start docker && systemctl enable docker

2.安装jdk

tar zxf jdk-8u91-linux-x64.tar.gz

mv jdk1.8.0_91 /usr/local/jdk1.8

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

source /etc/profile

3.安装unzip(因为后面打包需要解压tale.zip把里面的.jar文件丢到工作目录中)

yum -y install unzip

4.构建tale镜像

mkdir docker_tale && cd docker_tale/

vim Dockerfile

FROM centos:7
RUN yum install epel-release -y
RUN yum install nginx supervisor -y && yum clean all
RUN sed -i '47a proxy_pass http://127.0.0.1:9000;' /etc/nginx/nginx.conf
COPY supervisord.conf /etc/supervisord.conf
ENV PATH /usr/local/jdk1.8/bin:$PATH
WORKDIR /tale
CMD ["/usr/bin/supervisord"]

vim supervisord.conf

[supervisord]
nodaemon=true
[program:tale]
command=/usr/local/jdk/bin/java -jar /tale/tale-latest.jar
autostart=true
autorestart=true
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true

docker build -t tale:base .

查看镜像是否创建成功如下图

docker tag tale:base 192.168.11.25:5000/tale:base

docker push 192.168.11.25:5000/tale:base

mkdir -p /data/tale

要创建一个/data目录下面一个tale目录,因为后面配置Jenkins的时候会把项目传到/data目录下,然后把/data/tale这个目录映射到docker容器里面的工作目录下

五、配置Jenkins:192.168.11.26网页上配置

系统管理—》系统设置

注意:这里最好把其他两台服务器的ssh都做

系统管理—》Global Tool Configuration

创建一个maven项目进行运行,自动部署到服务器上

这里是写的是git仓库的地址,从哪里去拖取源码

这里跟linux里的crontab一样,计划周期让Jenkins不断去git仓库看代码是否更新

这里记得添加clean package

这里是用ssh写一个脚本在别的服务器上运行

这里可以写脚本去启动docker把本地的/data/tale目录映射到docker容器里的/tale目录下,因为上面写Daockerfile的时候编辑的工作目录就是docker里的/tale目录下,再把外面的jdk映射到docker容器中(脚本内容看下面)

docker rm -f tale-test
unzip /data/tale.zip -d /data/tale/
docker run -itd \
--name tale-test \
-p 80:80 \
-v /usr/local/jdk1.8:/usr/local/jdk \
-v /data/tale:/tale \
192.168.11.25:5000/tale:base

测试:访问网页查看是否自动部署完成

  • 作者:feili12138
  • 原文链接:https://blog.csdn.net/feili12138/article/details/106377570
    更新时间:2022-08-20 12:28:32