方法2:使用Jenkins构建Docker镜像 --SpringCloud
前提意义:
SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像
采用这种结构,代码的pom.xml文件需要修改
大致步骤流程是:
开发人员提交代码到Gogs仓库,触发webhooks钩子,然后Jenkins自动执行任务( 这一步可以删除钩子,手动进行操作),从整个Gogs仓库拉取代码,但是只编译打包其中的一个文件夹项目,生成jar包,然后根据文件夹项目根目录下的Dockfile文件使用远程Docker(其实就是本机安装的docker)制作镜像。
1. SpringCloud项目结构
Git仓库是整个项目,但是根据选项参数只编译打包spring-cloud-eureka-server-demo文件夹
注意Dockerfile文件的位置,跟方法1的所在位置不同,相应的Dockfile文件中使用jar包的位置也不同,这个也需要注意

Dockerfile文件内容
FROM java:8
MAINTAINER sandu <1103324414@qq.com>
VOLUME /tmp
ADD spring-cloud-eureka-server-demo-1.0-SNAPSHOT.jar /eureka-server-demo.jar
ENTRYPOINT ["java","-Xmx200m","-Xms200m","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka-server-demo.jar"]
EXPOSE 9011
pom.xml文件新增内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jarjune</groupId>
<artifactId>spring-cloud-eureka-server-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>com.jarjune</groupId>
<artifactId>spring-cloud-demo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- tag::plugin[] 新增的内容-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.3</version>
<configuration>
<imageName>tms/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- end::plugin[] -->
</plugins>
</build>
</project>
2. Docker配置
开启远程访问:
vim /lib/systemd/system/docker.service
# 添加下面这行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
systemctl daemon-reload
systemctl docker restart
配置国内163源,配置Harbor私有仓库地址,避免出现无法登陆远程仓库的情况
vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"insecure-registries": ["https://192.168.75.12"]
}
jenkins操作界面的shell命令使用的用户是jenkins用户,但是需要访问到docker的文件,没有相关权限造成的,采用最简单的办法,修改相关文件的权限,使jenkins用户可以进行访问
chmod 777 /var/run/docker.sock
3. Jenkins配置
安装docker插件
系统管理---系统设置---云,添加docker配置信息,具体如下图:

4. 工程中的设置
详看截图:

shell命令:
cd ${WORKSPACE}/${module_filename}
/usr/local/apache-maven-3.6.2/bin/mvn clean package docker:build -Dmaven.test.skip=true # 重要步骤
docker login http://192.168.75.12 -u admin -p harbor12345
docker tag eureka-server:0.5 192.168.75.12/springcloud/eureka-server:0.7
docker push 192.168.75.12/springcloud/eureka-server:0.7
5. 步骤截图




7. 查看生成的docker镜像并运行
[root@bogon ~]# docker run -p 9011:9011 -d tms/spring-cloud-eureka-server-demo
feb37c7360de06a792542bed63de8fb3f003d9aff8af563022f9af13951a5499
[root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
feb37c7360de tms/spring-cloud-eureka-server-demo "java -Xmx200m -Xms2…" 4 seconds ago Up 3 seconds 0.0.0.0:9011->9011/tcp kind_panini
6. 验证
使用浏览器访问: http://本机ip:9011
方法2:使用Jenkins构建Docker镜像 --SpringCloud的更多相关文章
- 方法1:使用Jenkins构建Docker镜像 --SpringCloud
前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...
- Docker:使用Jenkins构建Docker镜像
Docker 彭东稳 1年前 (2016-12-27) 10709次浏览 已收录 0个评论 一.介绍Jenkins Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从 ...
- jenkins构建docker镜像上传到harbor并发布到kubernetes
很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...
- 使用Jenkins pipeline流水线构建docker镜像和发布
新建一个pipeline job 选择Pipeline任务,然后进入配置页面. 对于Pipeline, Definition选择 "Pipeline script from SCM" ...
- Java SpringBoot 项目构建 Docker 镜像调优实践
PS:已经在生产实践中验证,解决在生产环境下,网速带宽小,每次推拉镜像影响线上服务问题,按本文方式构建镜像,除了第一次拉取.推送.构建镜像慢,第二.三-次都是几百K大小传输,速度非常快,构建.打包.推 ...
- Jenkins集成Docker镜像实现自动发布
1. 思路&流程 Jenkins集成Docker镜像实现自动发布与Jenkins发布mavne项目思路一样总体流程 为:Jenkins 拉去远端源码 -- gitl实现应用打包 -- jenk ...
- 打包应用和构建Docker镜像(docker在windows上)
在构建Docker时编译应用 一般有两种方法在构建镜像时进行打包应用.第一种方法就是使用基本的镜像,该镜像包括应用平台和构建工具,因此在Dockerfile中,复制源代码到镜像中并在构建镜像时编译ap ...
- 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少了解一些.前段时间研究OpenShift(paas的一种),发现了另外一种构建Docker镜像的方式:S2I ...
- Maven插件构建Docker镜像
背景 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上.单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网 ...
随机推荐
- (7)Go切片
切片 切片(Slice)是一个拥有相同类型元素的可变长度的序列.它是基于数组类型做的一层封装.它非常灵活,支持自动扩容. 切片是一个引用类型,它的内部结构包含地址.长度和容量.切片一般用于快速地操作一 ...
- Ecms7.5版CK编辑器保留word格式如何修改
7.5版的编辑器默认会清除多余的word代码,如果要保留word格式怎么修改? CKeditor编辑器默认复制会清除多余word代码,如果要保留word格式可以按下面修改配置: 修改 /e/admin ...
- shell中$(( ))、$( )、``与${ }的区别
转 :shell $(( )).$( ).``与${ }的区别 $( )与` `(反引号)命令替换 在bash中,$( )与` `(反引号)都是用来作命令替换的.命令替换与变量替换差不多,都是用来重组 ...
- [BUAA软工]Alpha阶段事后分析
设想和目标 虽然我们是从零开始的一个自定义项目,但语音Coding助手从一开始的设计与目标就很明确:加入语音接口使其能在shell端实现命令语音实现以及编辑运行脚本,设计前端编辑器并将后端shell与 ...
- 第09组 Beta冲刺(1/4)
队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...
- 秒杀功能压测 jmeter--------重要!!!
线程组里面有三个接口请求,依次为:显示商品列表.登录秒杀平台账户.进行秒杀 对线程组用5000个线程循环10次 设置一下默认配置,之后就不用反复填写了 设置配置文件这个具体功能就是读text文件并且设 ...
- Java并发包之阶段执行之CompletionStage接口
前言 CompletionStage是Java8新增得一个接口,用于异步执行中的阶段处理,其大量用在Lambda表达式计算过程中,目前只有CompletableFuture一个实现类,但我先从这个接口 ...
- phpexcel中文手册(转)
首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.php和PHPExcel的文件夹,这个类文件和文件夹是我们需要的,把class ...
- 2-1 CLI 工程结构
ng new 项目名称:去创建一个angular的项目 ng new pinduoduo 是否需要添加路由,选择否 选择传统的css rm -fr pinduoduo:删除刚才创建的项目 ng new ...
- 413(Request Entity Too Large)
场景,在现金速达后台上传图片的时候,fetch请求报错,图片虽然不大,只有几百kb但是需要转成bese64传给后台, 413(Request Entity Too Large) 一开始以为是fetch ...