美文网首页Docker容器
Docker+Jenkins+Gitlab+Springboot

Docker+Jenkins+Gitlab+Springboot

作者: 35d814b1857a | 来源:发表于2019-01-30 16:49 被阅读0次

1、安装服务器

1.安装Vm虚拟机以及Centos7系统
2.Centos上设置代理(翻墙用)
   临时开代理命令 (根据实际修改IP和端口):

export http_proxy="[http://10.5.21.127:1080](http://10.5.21.127:1080/)"
export https_proxy="[http://10.5.21.127:1080](http://10.5.21.127:1080/)"
export ftp_proxy="[http://10.5.21.127:1080](http://10.5.21.127:1080/)"

3.测试:curl google.com
   接受到返回值带有html的标签说明翻墙成功


2、安装Docker

1、卸载旧版

$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \ 
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

2、安装依赖包

yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

3、安装repository
https://download.docker.com/linux/centos/docker-ce.repo

yum-config-manager \
--add-repo \

4、安装docker

yum install docker-ce

5、修改 daemon.json

vim /etc/home/daemon.json
{"registry-mirrors":["[https://aaxe3v8h.mirror.aliyuncs.com](https://aaxe3v8h.mirror.aliyuncs.com/)"]}

6、启动

systemctl start docker

7、设置开机启动

systemctl enable docker

3、安装Jdk

官网下载jdk:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


把安装包在/usr/data/下,通过命令安装jdk:# rpm -ivh jdk-8u201-linux-x64.rpm
安装完即可,不需要配置环境变量

4、安装Jenkins

1、安装:http://pkg.jenkins-ci.org下载最近对应安装包



和安装Jdk一样,把下载好的安装包放到/usr.data/ 下 通过命令安装:rpm -ivh jenkins-2.7.3-1.1.noarch.rpm

2、配置:

    修改默认用户

vim /etc/sysconfig/jenkins
JENKINS_USER="root" 

    启动、停止、重启 (配置修改后需要重启)

service jenkins start/stop/restart

    开机启动

systemctl enable docker

5、配置防火墙 (firewall)

先把防火墙关闭、然后再执行永久关闭,一下是相关的命令:

1、查看firewall服务状态

systemctl status firewalld

2、查看firewall的状态

firewall-cmd --state

3、开启、重启、关闭、firewalld.service服务

开启

service firewalld start

重启

service firewalld restart

关闭(重启后失效)

service firewalld stop

永久关闭(重启后仍有效)

systemctl disable firewalld

4、查看防火墙规则

firewall-cmd --list-all

5、查询、开放、关闭端口

查询端口是否开放

firewall-cmd --query-port=8080/tcp

开放80端口

firewall-cmd --permanent --add-port=80/tcp

移除端口

firewall-cmd --permanent --remove-port=8080/tcp

重启防火墙(修改配置后要重启防火墙)

firewall-cmd --reload

参数解释

1、firwall-cmd:是Linux提供的操作firewall的一个工具;

2、--permanent:表示设置为持久;

3、--add-port:标识添加的端口;


6、安装GitLab

1、通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。

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

2、准备好这三个目录之后, 就可以开始运行 Docker 镜像了。 我的建议是使用unless-stopped 作为重启策略,

因为这样可以手工停止容器, 方便维护。

完整的运行命令如下:

docker run \
-p 8443:443 \
-p 8888:80  \
-p 2222:22 \
-p 9090:9090 \
--name gitlaba \
--restart always \
-v /home/gitlab/config:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/opt:/var/opt/gitlab \
gitlab/gitlab-ce:latest

3、修改gitlab.rb 把external_url改成部署机器的域名或者IP地址,命令:
查看gitlab的镜像id:docker ps


进入gitlab容器:docker exec -t -i e4d8f2dbae69 bash
编辑文件:vim /etc/gitlab/gitlab.rb //注意IP后面不能有端口号


4、修改gitlab配置文件:改ip和端口,这样git克隆的时候就显示ip地址而不是镜像ID
命令 :vim /home/gitlab/opt/gitlab-rails/etc/gitlab.yml


5、重启docker
命令:docker start gitlab

7、安装git

因为Jenkins 要用git 才能拉取代码,所以在服务器上要安装一个git给Jenkins用
yum install -y git


8、安装maven

在官网下载最新的maven包:http://maven.apache.org/download.cgi


1.自己创建一个路径/usr/local/maven,将文件解压到该路径下:
     tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /usr/local/maven/
2.设置环境变量:
    vim /etc/profile
3.在/etc/profile的文件末尾添加以下配置:
export M2_HOME=/usr/local/maven/apache-maven-3.6.0
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH

4.执行source命令让新配置立即生效:
     source/etc/profile
5.安装好后测试一下:mvn -v


9、Git配置多个SSH-Key

我是搭建虚拟机的来配置这些,所以我本机有一个公司的Git SSH-Key,我还需要给虚拟机的GitLab再配置一个GitKey。这样用需要生成一个自定义用的SSH-Key:
$ ssh-keygen -t rsa -C "youremail@your.com” -f ~/.ssh/id_rsa_gitlablocalhost
然后需要配置config文件

# gitlab
Host gitlab.com
    HostName 10.5.2.121
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# gitlablocalhost
Host gitlab.localhost
    HostName 192.168.26.128
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gitlablocalhost

然后把刚刚创建的ssh-key加到自己创建的GitLab的settings里,此处省略。。。。。。。


10、配置Jenkins

1.安装插件:系统管理->插件管理
     安装git相关的插件、maven相关的插件

2.凭据Jenkins


3.创建新任务
要构建一个maven项目:

4.新任务配置
    1.配置gitlab:需要ssh的git地址,加入账号

    2.配置触发器:将url、key填入到gitlab中的项目设置里:


gitlab截图如下:

然后点击addwebhook、然后测试一下

    3.配置编译、打包

    4.执行shell

shell中的大概分为一下几步
    1.将dockerfile放到指定目录里

    2.将打好的jar包复制到和dockerfile同路径下:cp /路径/demo.jar ${dockerfile路径}

    3.构建docker镜像:docker build -t ${服务名字} . 

    4.启动镜像:docker run --name ${服务名字} -v ${dockerfile路径}:${dockerfile路径} -d -p 9999:8080 ${服务名字}

       8080为tomcat的启动端口,9999为服务器端口,项目启动后访问地址为:192.168.xx.xx:9999/hello

代码如下:

#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/work/project
# 源jar路径 
SOURCE_PATH=/var/lib/jenkins/workspace/springboot-maven/target
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=demo-test-0.0.1
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
DATE=`date +%Y%m%d%H%M`
# 最新构建代码 移动到项目环境
function transfer(){
    echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME.jar 迁移至 $BASE_PATH ...."
        cp $SOURCE_PATH/$SERVER_NAME.jar $BASE_PATH
    echo "迁移完成"
}
# 备份
function backup(){
    if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
        echo "$SERVER_NAME.jar 备份..."
            cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
        echo "备份 $SERVER_NAME.jar 完成"
    else
        echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
    fi
}
# 构建docker镜像
function build(){
    if [ -n "$IID" ]; then
        echo "存在$SERVER_NAME镜像,IID=$IID"
    else
        echo "不存在$SERVER_NAME镜像,开始构建镜像"
            cd $BASE_PATH
        docker build -t $SERVER_NAME .
    fi
}
# 运行docker容器
function run(){
    backup
    transfer
    build
    if [ -n "$CID" ]; then
        echo "存在$SERVER_NAME容器,CID=$CID,重启docker容器 ..."
            docker restart $SERVER_NAME
        echo "$SERVER_NAME容器重启完成"
    else
        echo "不存在$SERVER_NAME容器,docker run创建容器..."
            docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 9999:8080 $SERVER_NAME
        echo "$SERVER_NAME容器创建完成"
    fi
}
  
#入口
run

    5.设置jar包位置



11、spring-boot配置maven插件

1.在pom.xml中设置jar包和名字
<packaging>jar</packaging>



2.设置maven插件

<docker.image.prefix>demo</docker.image.prefix>



<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.3.6</version>
    <configuration>
        <repository>${docker.image.prefix}/${project.artifactId}</repository>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>

12、配置Dockerfile

1.在服务器获取镜像:docker pull java:8
2.配置dockerfile文件:

FROM java:8
ADD demo-test-0.0.1.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["/usr/bin/java","-jar","app.jar"]

将配置好的dockerFile放到服务器指定路径下,或者放在spring-boot项目中,将Jenkins中shell代码中的基本路径改为项目路径即可。本次搭建的Jenkins自动生成jar包的路径在:/var/lib/jenkins/workspace/springboot-maven/target下

以上的配置全部OK后就可以通过git push代码自动发布了。

13、总结

从搭建到完成一共花了5天时间,途中遇到各种各样的坑。一个问题一个问题解决:问人&百度,记录此博客以后备用。下次安装内容:redis、mysql等

相关文章

  • Docker+Jenkins+Gitlab+Springboot

    1、安装服务器 1.安装Vm虚拟机以及Centos7系统2.Centos上设置代理(翻墙用)临时开代理命令 (根据...

  • docker+jenkins+gitlab+springboot

    一开始以为是项目配置问题,但本地clean package是正常的,项目是最基础的springboot项目,本地没...

网友评论

    本文标题:Docker+Jenkins+Gitlab+Springboot

    本文链接:https://www.haomeiwen.com/subject/dsjcsqtx.html