本文为归雀楼博客原创文章, 转载无需和我联系, 但请注明来自归雀楼博客 http://www.guiquelou.cn
  • Docker环境安装

1. 安装yum-utils【  管理repository及扩展包的工具 (主要是针对repository)】

Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

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

2. 为yum源添加docker仓库位置

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3. 安装docker

yum install docker-ce

4. 启动docker

systemctl start docker

5.查看版本

docker version

  • Jenkins安装

1. 下载Jenkins的Docker镜像

docker pull jenkins/jenkins:lts

2. 在Docker容器中运行Jenkins

docker run -p 8090:8080 -p 50000:5000 --name jenkins -u root -v /mydata/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts

3.防火墙开放端口

firewall-cmd --zone=public --add-port=8090/tcp --permanent

systemctl restart firewalld

4. jenkins配置

6.查看初始密码

[root@VM_0_13_centos ~]# docker ps -a

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                                        NAMES

7df128adcbae        jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   9 minutes ago       Up 9 minutes        50000/tcp, 0.0.0.0:50000->5000/tcp, 0.0.0.0:8090->8080/tcp   jenkins

[root@VM_0_13_centos ~]# docker exec -u 0 -it jenkins /bin/bash

root@7df128adcbae:/# cat /var/jenkins_home/secrets/initialAdminPassword

ababcfd5d3054d9794c0ca44de5fcae5

7.安装插件

8.修改用户密码

9. 新增maven的安装配置

10. 插件配置

根据角色管理权限的插件:Role-based Authorization Strategy

远程使用ssh的插件:SSH plugin

  1. 全局工具配置

通过系统管理->全局工具配置来进行全局工具的配置,比如maven的配置

12.系统配置

在系统管理->系统配置中添加全局ssh的配置,这样Jenkins使用ssh就可以执行远程的linux脚本了

13.角色权限配置

(1)在系统管理->全局安全配置中启用基于角色的权限管理

(2)进入系统管理->Manage and Assign Roles界面

(3)添加角色与权限的关系

Manage Roles:创建角色

1.Global roles全局角色

a.必须创建一个admin角色,把所有的权限都给他。

b.创建一个blog角色,要以下权限Overall下的read,JOB下create的

Project roles 项目角色

添加项目角色,这里为了以后运维方便,使用通配符匹配项目。

Assign Roles: 分配角色 

(4)先登录admin用户,可以看到全部项目

(5)归雀楼用户登陆

  • POM文件docker远程配置


<plugin>

    <groupId>com.spotify</groupId>

    <artifactId>docker-maven-plugin</artifactId>

    <version>${docker.plugin.version}</version>

    <!--将插件绑定在某个phase执行-->

    <executions>

        <execution>

            <id>build-image</id>

            <!--用户只需执行mvn package ,就会自动执行mvn docker:build-->

            <phase>package</phase>

            <goals>

                <goal>build</goal>

            </goals>

        </execution>

    </executions>

    <configuration>

        <!--指定生成的镜像名-->

        <imageName>${project.name}</imageName>

        <!--指定标签-->

        <imageTags>

            <imageTag>latest</imageTag>

        </imageTags>

        <!--指定远程 docker api地址-->

        <dockerHost>${docker.url}</dockerHost>

        <!--指定docker文件目录-->

        <dockerDirectory>${project.basedir}</dockerDirectory>

        <resources>

            <resource>

                <targetPath>/</targetPath>

                <!--jar 包所在的路径  此处配置的 即对应 target 目录-->

                <directory>${project.build.directory}</directory>

                <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->

                <include>${project.build.finalName}.jar</include>

            </resource>

        </resources>

    </configuration>

</plugin>

  • 执行脚本准备

#!/usr/bin/env bash

app_name='guiquelou-admin'

#判断是否存在guiquelou-admin 镜像

docker images | grep ${app_name}&> /dev/null

#如果不存在,创建镜像

if [ $? -ne 0 ]

then

  echo '----build guiquelou-admin images----'

  docker build  -t ${app_name} /usr/local/project/guiquelou-blog/${app_name} #生成镜像

else

    echo '----guiquelou-admin images is existed!!!----'

fi





#判断是否存在guiquelou-admin容器

docker ps | grep ${app_name} &> /dev/null





#如果不存在,则创建容器

if [ $? -ne 0 ]

then

   echo '----create and start guiquelou-admin container----'

else

  echo '----stop guiquelou-admin container----'

  docker stop ${app_name}

  echo '----remove guiquelou-admin container----'

  docker rm ${app_name}

fi

docker run -p 8601:8601 --name ${app_name}  \

    --link guiquelou-eureka:guiquelou-eureka \

    --link guiquelou-rabbitmq:guiquelou-rabbitmq \

    --link guiquelou-redis:guiquelou-redis \

    -v /usr/local/project/guiquelou-blog/${app_name}/logs:/${app_name}/logs/${app_name}/ \

    -v /usr/local/project/guiquelou-blog/${app_name}/target/${app_name}.jar:/${app_name}/${app_name}.jar \

    -d ${app_name}

docker logs --tail=200 guiquelou-admin

注意:windows下的.sh脚本上传到linux上使用,需要修改文件格式,否则会因为有特殊格式存在而无法执行

#使用vim编辑器来修改

vi guiquelou-admin.sh

# 查看文件格式,windows上传上来的默认为dos

:set ff

#修改文件格式为unix

:set ff=unix

#保存并退出

:wq

  • jenkins中创建执行任务

1.首先我们需要新建一个任务,设置任务名称后选择构建一个自由风格的软件项目

2.然后在源码管理中添加我们的git仓库地址

3.此时需要添加一个凭据,也就是我们git仓库的账号密码

4.填写完成后选择该凭据,就可以正常连接git仓库了

5.之后我们需要添加一个构建,选择调用顶层maven目标,该构建主要用于把我们的源码打包成Docker镜像并上传到我们的Docker镜像仓库去

6.选择我们的maven版本,然后设置maven命令和指定pom文件位置

7.之后添加一个执行远程shell脚本的构建,用于在我们的镜像打包完成后执行启动Docker容器的.sh脚本,若没有选项请按照ssh插件:

8.需要设置执行的shell命令如下

9.之后点击保存操作,我们的任务就创建完成了,在任务列表中我们可以点击运行来执行该任务


归雀楼
135 声望8 粉丝

励志远航