jenkins 共用宿主机中的docker自动化部署

news2024/12/23 15:48:49

目录

第一节 jenkins 共用宿主机中的docker自动化部署

1.docker命令安装启动jenkins

2.查询jenkins内是否可以执行宿主机中的docker

第二节.jenkins 配置自动化部署

1.界面配置

1.配置mave

2.配置gitee

第三节 创建springboot多模块项目

 1.相关配置

1.pom

 2.编写dockerfile文件

3.项目上传到gitee

第四节 jenkins部署项目相关配置

第五节 测试启动

1.项目发布构建

2.查看宿主机进程

3.查看jenkins容器进程

 


第一节 jenkins 共用宿主机中的docker自动化部署

1.docker命令安装启动jenkins

 mkdir 挂载文件
##############################################################################################################################
## 
    cd Users/jiajie/soft
    mkdir jenkins
    ## 上传maven文件到 jenkins 目录下
## 
    宿主机安装的docker.sock文件 
    var/run/docker.sock
##############################################################################################################################
     
     启动命令
##############################################################################################################################
docker run -u root -m 1024m --name jenkins 
-p 9998:8080 -p 50000:50000 --privileged 
-v /var/run/docker.sock:/var/run/docker.sock 
-v $(which docker):/bin/docker 
-v /Users/jiajie/soft/jenkins:/var/jenkins_home 
-d jenkins/jenkins:lts

#以root用户运行---否则会报无权限
参数说明:
(1) -v /var/run/docker.sock:/var/run/docker.sock:容器中的进程通过它与Docker守护进程进行通信
(2) -v /usr/bin/docker:/usr/bin/docker:将宿主机的docker命令挂载到容器中。
/usr/bin.docker为docker命令所在具体位置,可以通过which docker指令获取。或者挂载时使用-v $(which docker):/usr/bin/docker
(3) -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7:ibltdl.so.7是Docker命令执行所依赖的函数库,容器中library的默认目录是/usr/lib/x86_64-linux-gnu/,把宿主机的libltdl.so.7函数库挂载到该目录即可。
可以通过whereis libltdl.so.7命令查看具体位置
centos7中该文件路径为/usr/lib64/libltdl.so.7
ubuntu中该文件路径为/usr/lib/x86_64-linux-gnu/libltdl.so.7

 

2.查询jenkins内是否可以执行宿主机中的docker

 

进入容器 docker exec -it bae630c41276 /bin/bash
执行 docker ps 
正常使用 宿主机docker

 

第二节.jenkins 配置自动化部署

1.界面配置

访问
    http://localhost:9998/login?from=%2F

#查看密码
    宿主机挂载目录下 /Users/jiajie/soft/jenkins/secrets/initialAdminPassword
    也可以在/var/jenkins_home/secrets/initialAdminPassword这个文件中查看到管理员密码

 

 

 

 

 

1.配置mave

M2_HOME
/var/jenkins_home/apache-maven-3.6.1
PATH+EXTRA
$M2_HOME/bin

 

2.配置gitee

 

 

 

 

 

 

第三节 创建springboot多模块项目

 1.相关配置

1.pom

#####  需要加上 spring-boot-maven-plugin
########否则打包会报 no main manifest attribute, in app.jar
<build>
    <finalName>micro-gateway</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!--加入下面两项配置-->
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
                <mainClass>com.micro.microgateway.MicroGatewayApplication</mainClass>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    </plugins>
</build>

 2.编写dockerfile文件

FROM openjdk:8-jdk-alpine
MAINTAINER heshuai <2460983732@qq.com.com>
##镜像源
RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \
    && echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \
    && apk update upgrade \
    && apk add --no-cache openssh  vim \
    && apk add --no-cache procps unzip curl bash tzdata \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
RUN mkdir /data
RUN mkdir /micro-gateway
RUN mkdir /data/log
WORKDIR /micro-gateway
COPY target/micro-gateway.jar /micro-gateway
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /micro-gateway/micro-gateway.jar"]
EXPOSE 9000

3.项目上传到gitee

###相关命令
    上传项目
    第一步:建立本地git仓库
    cd 到你的本地项目根目录下,执行git命令
    git init
    第二步:将本地项目工作区的所有文件添加到暂存区
    git add .    // . 表示所有文件, 如果想添加项目中的指定文件,那就把 . 改为指定文件名即可 
    第三步:将暂存区的文件提交到本地仓库
    git commit -m ""   //冒号里面写注释语句 eg:git commit -m "init project"
    第四步:在码云上创建自己的项目,创建如图所示
    创建仓库 https://gitee.com/wondersgroups/little-sweet-sister.git--仓库地址
    
    第五步:将本地仓库关联到码云上
    git remote add origin https://gitee.com/wondersgroups/little-sweet-sister.git
    注意:在这一步时如果出现错误:fatal:remote origin already exists 意思是路径存在了,就需要删除原来的路径从新添加
        git remote rm origin
    
    第六步:最后一步,将代码由本地仓库上传到Github远程仓库
    git push -u origin master    指定分支 master
    git push -u origin +master   强制上传
    注意:如果报failed to push some refs to git 错误出现错误的主要原因是码云中的README.md文件不在本地代码目录
    可以通过如下命令进行代码合并【注:pull=fetch+merge]
    git pull --rebase origin master
    执行上面代码后可以看到本地代码库中多了README.md文件
    此时再执行语句 git push -u origin master即可完成代码上传到github 
     
    执行完之后如果无错误就上传成功了!
    需要提示的是这里的master是Github默认的分支,如果你本地的当前分支不是master,就用git checkout master命令切换到master分支,
    如果你想用本地当前分支上传代码,则把第六步的命令里的master切换成你的当前分支名即可。
    如果最后再出现错误,就执行下面代码:
    git push -u origin master -f  强制命令会覆盖别人分支,慎用   

 

第四节 jenkins部署项目相关配置

 

 

 

 

##############################################################################################################################
###构建命令
##############################################################################################################################

    echo $JAVA_HOME
    echo "=============java变量路径:$JAVA_HOME" 
    PROJECT_LOCATION=little-sweet-sister
    GROUP_ID=com.micro
    cd /var/jenkins_home/workspace/${PROJECT_LOCATION}/${PROJECT} && /var/jenkins_home/apache-maven-3.6.1/bin/mvn  clean install -am -pl ${GROUP_ID}:${PROJECT} -Dmaven.test.skip=true
    #cd $PROJECT_LOCATION && /var/jenkins_home/apache-maven-3.6.1/bin/mvn  clean install -am -pl ${GROUP_ID}:${PROJECT} -Dmaven.test.skip=true
    TAG=`date "+%Y%m%d"`
    IMAGE_NAME=$PROJECT
    echo "=============查看进程id,然后删除"
    #容器id
    cid=$(docker ps -a | grep $IMAGE_NAME | awk '{print $1}')
    #镜像id
    iid=$(docker images | grep $IMAGE_NAME | awk '{print $3}')
    if [ -n "$cid" ]; then
      echo "存在容器$IMAGE_NAME,cid=$cid,删除容器。。。"
      docker rm -f $cid
    else
       echo "不存在$IMAGE_NAME容器"
    fi
    if [ -n "$iid" ]; then
      echo "存在镜像$IMAGE_NAME,iid=$iid,删除容器镜像。。。"
      #docker rmi -f $iid
    else
       echo "不存在$IMAGE_NAME镜像"
    fi 
    #####
    case $PROJECT in 
    "micro-gateway")    
        cd /var/jenkins_home/workspace/${PROJECT_LOCATION}/micro-gateway;;
    "micro-pay")
     	cd micro-pay;;
     "micro-base")    
        cd micro-base;;   
    *)
    	echo "error"
        ;;
    esac
    ### 构建容器
    docker build -t $IMAGE_NAME .
    echo "=============开始构建镜像$IMAGE_NAME"
    echo "当前docker 所有镜像:"
    docker images
    echo "启动容器------->"
    case $PROJECT in
          "micro-gateway")
         	docker run -p 9000:9000 -d --restart=always -e JAVA_OPTS='-Xmx500m -Xms300m -Dspring.profiles.active=test' -v /Users/jiajie/soft/logs/micro-gateway:/data/log --name $IMAGE_NAME  $IMAGE_NAME
            ;;
          "micro-pay")
         	docker run -p 8082:8082 -d --restart=always -e JAVA_OPTS='-Xmx500m -Xms300m -Dspring.profiles.active=test' -v /Users/jiajie/soft/logs/micro-pay:/data/log --name $IMAGE_NAME  $IMAGE_NAME  
            ;;
            *)
            echo "error"
            ;;
        esac    
    echo "启动服务成功"
    echo "查看启动的所有进程:" 
    docker ps

 

第五节 测试启动

1.项目发布构建

 

 

2.查看宿主机进程

#查看宿主机进程
docker ps

 

3.查看jenkins容器进程

 

#查看jenkins容器进程
docker exec -it bae630c41276 /bin/bash 
docker ps

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试题】作用域和闭包

1. 作用域 作用域是指变量的合法使用范围。 例如下图中&#xff0c;函数fn3内定义的变量a3&#xff0c;无法在函数fn3以外的区域使用。 作用域分为全局作用域&#xff0c;函数作用域&#xff0c;块级作用域&#xff08;ES6新增&#xff09; 全局作用域&#xff1a;变量没有受…

HTML+CSS+JS个人网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

MYSQL索引数据结构----B+树

索引数据结构的考量 我们在考虑数据结构的时候&#xff0c;应该首先要知道数据存放在哪里&#xff1f; 而MYSQL的数据是持久化的&#xff0c;所以其数据&#xff08;数据记录索引&#xff09;应该是保存在磁盘里面的。因此当我们要查询某条数据记录时&#xff0c;就会先从磁盘…

[附源码]计算机毕业设计JAVA某城市参军和退役军人信息管理系统

[附源码]计算机毕业设计JAVA某城市参军和退役军人信息管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff…

一文理解Linux的基本指令(三分钟学会Linux基本指令)

前沿&#xff1a; 本文小马将把Linux一般比较常见的指令给大家一一列举出来&#xff0c;为了大家忘记某些指令后&#xff0c;可以方便查询记忆&#xff0c;再次小马建议&#xff0c;Linux指令并不需要去特别花时间专门记忆&#xff0c;只需要多进行操作实现就行&#xff01; &a…

算法图解学习3 选择排序

random recording 随心记录 What seems to us as bitter trials are often blessings in disguise. 看起来对我们痛苦的试炼&#xff0c;常常是伪装起来的好运。 选择排序 内存工作原理 背景引入 假设你去看演出&#xff0c;需要将东西寄存。寄存处有一个柜子&#xff0c;柜子…

Go | 函数注意事项

细节汇总 函数的形参列表可以是多个&#xff0c;返回值列表也可以是多个形参列表和返回值列表的数据类型&#xff0c;可以是值类型、也可以是引用类型函数的命名遵循标识符命名规范&#xff0c;首字母不能是数字&#xff0c;首字母大写表示该函数可以被本包文件和其它文件使用…

在线就能设计电商主图的智能平台工具

商品要上新要如何设计新品主图&#xff1f;想设计简约分的主图素材在哪&#xff1f;下面小编教你使用这个在线工具乔拓云&#xff0c;工具内包含了设计主图用到的所有工具&#xff0c;还有海量的电商模板以及免扣素材&#xff0c;都是可以直接使用到主图设计中&#xff0c;不需…

Linux中线程的介绍

目录 一.线程概念 1.什么是线程 二.Linux进程与线程 三.pthread库 3.1线程创建 3.2线程等待 3.2线程终止 3.4分离线程 四.线程ID及进程地址空间布局 一.线程概念 1.什么是线程 1.在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&…

2022亚太杯建模B题思路 : 高速列车的优化设计 小美赛数学建模 B题思路

1 B题&#xff1a;高速列车的优化设计 2022年4月12日&#xff0c;中国高铁复兴CR450多机组成功实现单列列车速度435 km/h&#xff0c;相对速度870 km/h&#xff0c;创造了高铁多机组列车穿越明线和隧道速度的世界纪录。新一代标准动车组“复兴”是中国自主研发的具有全知识产权…

外贸线上推广引流的技巧

外贸网站建成后&#xff0c;很多外贸企业通常会面临一个重要的问题。网站装修和产品布局都很漂亮&#xff0c;但是流量很小。由此可见&#xff0c;外贸网站的引流推广是非常重要的。接下来&#xff0c;米贸搜给大家分享一些外贸网站引流推广的技巧&#xff0c;让网站快速获得流…

浙里办微信小程序上架

一、概述 本指南旨在为“浙里办”单点登录组件提供接入指南&#xff0c;“浙里办”单点登陆组件&#xff0c;上架在IRS&#xff0c;为上架在IRS的应用&#xff0c;提供统一的单点登录解决方案&#xff0c;现阶段仅支持微信端的接入。 二、服务创建 IRS 应用管理员在 IRS 应用…

Kali系统MSF模块暴力破解MySQL弱口令漏洞

一、实验环境 1.攻击方&#xff1a; 攻击环境使用KALI系统&#xff08;使用虚拟机搭建&#xff09;的Metasploit模块&#xff0c;msfconsole是metasploit中的一个工具&#xff0c;它集成了很多漏洞的利用的脚本&#xff0c;并且使用起来很简单的网络安全工具。 这里要特别强…

代码随想录64——额外题目【哈希表、字符串】:205同构字符串、1002查找常用字符、925长键按入、844比较含退格的字符串

文章目录1.205同构字符串1.1.题目1.2.解答2.1002查找常用字符2.1.题目2.2.解答3.925长键按入3.1.题目3.2.解答4.844比较含退格的字符串4.1.题目4.2.解答4.2.1.使用栈4.2.2.从后往前双指针1.205同构字符串 参考&#xff1a;代码随想录&#xff0c;205同构字符串&#xff1b;力扣…

MySQL数据库的索引

文章目录一、索引是什么&#xff1f;索引的作用二、索引的使用查看索引创建索引删除索引三、索引的底层一、索引是什么&#xff1f; 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c;并指定索引的类型&#…

[附源码]java毕业设计医疗预约系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SQL注入原理、过程、防御方案、RASP概念

一、sql注入原理 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的语句上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息…

第1关:Hive的安装与配置

为了完成本关任务&#xff0c;你需要掌握&#xff1a; 1.Hive的基本安装&#xff1b; 2.Mysql的安装与设置&#xff1b; 3.Hive 的配置。 注意&#xff1a;本关实训Hive的安装与配置建立在Hadoop已安装配置好的情况下。 Hive 的基本安装 从 官网 下载Hive二进制包&#xf…

优维科技CTO黎明访谈实录:“大场景+小算法”构建AiOps运维技术哲学

智能运维、自动化运维发展到现在&#xff0c;已经有将近7成的IT管理者学会利用大数据、人工智能产品及解决方案赋能团队&#xff0c;在生产效率、适应性和决策能力等层面实现了切实有效的正向转型。 今天的中国企业&#xff0c;已经在云端新基建、数字化转型的浪潮中实现降本增…

美食杰项目 -- 菜品信息(五)

目录前言&#xff1a;具体实现思路&#xff1a;步骤&#xff1a;1. 展示美食杰菜谱大全效果2. 引入element-ui3. 代码总结&#xff1a;前言&#xff1a; 本文给大家讲解&#xff0c;美食杰项目中 实现菜品信息页的效果&#xff0c;和具体代码。 具体实现思路&#xff1a; 跳转…