• Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】


    一、前言

    Jenkins作为CI、CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的。最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一下。网上比较多的教程都是在Linux上搭建Jenkins,小编经过一个星期的探索终于完成了在docker中进行搭建。

    最终版就是:通过git上传代码--->使用Jenkins构建自动打包--->把jar包打成docker镜像,运行在docker中,Windows下进行访问

    主要记录一下一些踩过的坑和注意点,让后来人能够跟着小编一次完成!!

    二、安装Docker

    安装Docker

    三、linux安装jdk和maven

    1、下载JDK8Linux版本

    官网下载太慢了,小编这里为大家下载好了:

    链接:百度网盘地址
    提取码:ov24

    2、下载Maven

    maven3.8.5下载链接

    3、使用xftp上传到linux上

    在这里插入图片描述

    4、解压

    解压maven

    tar -zxvf apache-maven-3.8.5-bin.tar.gz
    

    重命名maven

    mv apache-maven-3.8.5-bin.tar.gz apache-maven-3.8.5
    

    解压jdk

    tar -zxvf jdk-8u333-linux-x64.tar.gz
    

    重命名jdk

    mv jdk-8u333-linux-x64.tar.gz jdk1.8
    

    5、配置环境变量

    进入环境变量文件

    vim /etc/profile
    

    添加jdk和manven配置
    输入i,进入输入模式

    注意自己的安装目录,放在文件最上面就行

    JAVA_HOME=/usr/local/java/jdk1.8
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    export MAVEN_HOME=/usr/local/java/apache-maven-3.8.5
    export PATH=${MAVEN_HOME}/bin:${PATH}
    

    按下esc ,输入:wq保存退出。

    在这里插入图片描述

    查看是否安装成功

    java -version
    
    mvn -v
    

    在这里插入图片描述

    6、配置Maven加速镜像

    cd apache-maven-3.8.5/conf/
    
    vim settings.xml
    

    输入i,进入输入模式

    <mirrors>
    	<mirror>
    	    <id>alimaven</id>
    	    <name>aliyun maven</name>
    	    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    	    <mirrorOf>central</mirrorOf>
    	</mirror>
    </mirrors>
    

    按下esc ,输入:wq保存退出。

    在这里插入图片描述

    四、Docker安装Jenkins

    1.准备挂载目录

    cd home/
    
    mkdir jenkins_home
    

    一定要赋予修改权限,不然挂载会失败,我们这里给最高权限。

    chmod -R 777 jenkins_home
    

    在这里插入图片描述

    2. 执行docker命令

    docker run -di --name=myjenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home \
    -v /usr/local/java/jdk:/usr/local/jdk1.8 \
    -v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5 \
    -v $(which docker):/usr/bin/docker \
    -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
    

    -v /home/jenkins_home:/var/jenkins_home:是对容器内存储Jenkins的一些配置信息的文件夹
    -v /usr/local/java/jdk:/usr/local/jdk1.8:是把linux下的jdk和容器内的关联(配置Jenkins时使用)
    -v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5:是把linux下的maven和容器内的关联(配置Jenkins时使用)

    -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock:是可以在Jenkins容器里使用我们Linux下的docker。

    五、配置Jenkins

    1. 进入Jenkins

    输入:http://192.168.84.133:8080/(ip+端口号)
    在这里插入图片描述

    2. 获取密码

    docker logs 容器id
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3. 安装插件

    在这里插入图片描述
    在这里插入图片描述

    4. 创建用户

    在这里插入图片描述

    5. 保存配置地址

    在这里插入图片描述

    6. 配置插件镜像

    在这里插入图片描述
    在这里插入图片描述
    输入:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

    点击提交
    在这里插入图片描述
    在这里插入图片描述

    7. 安装ssh插件

    在这里插入图片描述
    安装完成重启一下Jenkins

    8. 添加ssh登录账号凭据

    点击系统管理,找到下图点击
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    9. 配置全局ssh

    点击系统管理,找到系统配置

    在这里插入图片描述
    点击新增:

    在这里插入图片描述
    点击保存:
    在这里插入图片描述

    10. 配置jdk和maven

    点击系统管理,找到全局工具配置
    在这里插入图片描述

    在这里插入图片描述
    点击保存

    六、准备Springboot项目到git

    1. 核心代码

    我们看到只是一个请求打印,我们最后访问有docker成功,代表我们构建发包成功!

    在这里插入图片描述

    2. pom内容

    <build>
        <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>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    3. yml文件

    这里只指定了端口号

    server.port=8081
    

    4. Dockerfile

    和pom文件同级

    FROM java:8
    
    COPY *.jar /app.jar
    
    CMD ["--server.port=8080"]
    
    EXPOSE 8080
    
    ENTRYPOINT ["java", "-jar", "/app.jar"]
    

    5. 上传git仓库

    在这里插入图片描述

    七、使用Jenkins部署项目

    1. 新建任务

    在这里插入图片描述
    在这里插入图片描述

    2. 添加git凭据

    在这里插入图片描述
    在这里插入图片描述
    选择刚刚添加的凭据报错信息消失
    在这里插入图片描述

    3. 添加maven构建

    在这里插入图片描述
    在这里插入图片描述

    4. 增加构建执行shell

    在这里插入图片描述
    shell脚本:

    #!/bin/bash
    # 服务名称
    SERVER_NAME=jenkins
    
    # 源jar名称,mvn打包之后,target目录下的jar包名称
    JAR_NAME=demo-0.0.1-SNAPSHOT
    
    # jenkins下的目录
    JENKINS_HOME=/var/jenkins_home/workspace/jenkins
    
    # 等待三秒
    echo sleep 3s
    sleep 1
    echo sleep 2s
    sleep 1
    echo sleep 1s
    sleep 1
          
    echo "结束进程完成"
    
    cd $JENKINS_HOME/target
    
    cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target
    
    # 修改文件权限
    chmod 755 $JAR_NAME.jar
    
    echo "看看docker能不能用"
    docker -v
    
    echo "停止容器"
    # 停止容器
    docker stop springboot
    
    echo "删除容器"
    # 删除容器
    docker rm springboot
    echo "删除镜像"
    # 删除镜像
    docker rmi springboot
    echo "打包镜像"
    # 打包镜像
    docker build -t springboot .
    echo "运行镜像"
    # 运行镜像
    docker run -d -p 8081:8081 --name springboot springboot
    

    在这里插入图片描述

    5. 立即构建

    在这里插入图片描述

    6. 控制台输出报错

    在这里插入图片描述
    我们看到打包成功了,就是在使用docker命令的时候出现权限问题,这是我们要给docker.sock权限就可以解决了!!

    报错信息:

    Got permission denied while trying to connect to the Docker daemon socket at
     unix:///var/run/docker.sock: Post 
     "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/springboot/stop": dial unix 
     /var/run/docker.sock: connect: permission denied
    

    解决方案:

    chmod a+rw /var/run/docker.sock
    

    7.在次构建

    我们发现没有报错,也看到了容器的id

    在这里插入图片描述

    8. 查询docker镜像是否启动

    docker images
    
    docker ps
    

    在这里插入图片描述

    9. Win10进行访问测试

    输入地址:http://192.168.84.133:8081/test/docker
    在这里插入图片描述

    七、总结

    小编断断续续研究了一星期,太不容易了,中间也是遇到很多坑,只要是跟着小编走下去的基本都可以跑出来的!
    看到这里还不给小编一键三连起来!!谢谢大家了哦~


    有缘人才可以看得到的哦!!!

    点击访问!小编自己的网站,里面也是有很多好的文章哦!

  • 相关阅读:
    【开发】安防监控/视频存储/视频汇聚平台EasyCVR优化播放体验的小tips
    Vue——Vue简介、MVC与MVVM之间的区别(面试题)、条件渲染 (面试)、循环渲染(面试)、面试题/笔试题
    代码随想录算法训练营20期|第三十九天| 动态规划part02|● 62.不同路径 ● 63. 不同路径 II
    PTA 7-102 藏头诗
    6.1 Go语言中接口使用样例
    如何理解 HTTP 状态码?
    我的学习笔记
    API 文档搜索引擎
    驱动开发:配置Visual Studio驱动开发环境
    wwwwwwwwwwwwwwww
  • 原文地址:https://www.cnblogs.com/wang1221/p/16362058.html