前提意义:

SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像

采用这种结构,代码不用做任何修改。

大致步骤流程是:

开发人员提交代码到Gogs仓库,触发webhooks钩子,然后Jenkins自动执行任务( 这一步可以删除钩子,手动进行操作),从整个Gogs仓库拉取代码,但是只编译打包其中的一个文件夹项目,生成jar包,然后根据文件夹项目根目录下的Dockfile文件使用远程Docker(其实就是本机安装的docker)制作镜像。

1. SpringCloud项目结构

注意Dockerfile文件的位置,跟src和pom.xml同级,后面会用到这个文件,若不同级,后面选择Dockerfile文件的时候需要酌情修改,就是使用环境变量的那几个地方

Dockerfile文件内容

FROM java:8
MAINTAINER sandu <1103324414@qq.com>
VOLUME /tmp
ADD target/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

Git仓库是整个项目,但是根据选项参数只编译打包spring-cloud-eureka-server-demo文件夹

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源:

vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

3. Jenkins配置

安装docker插件

系统管理---系统设置---云,添加docker配置信息,具体如下图:

4. 工程中的设置

构建,一定要选择生成jar包之后的操作,详看截图:

5. 查看生成的docker镜像并运行


[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
eureka-server latest 846ceb0bc1fc 57 seconds ago 686MB
java 8 d23bdf5b1b1b 2 years ago 643MB [root@bogon ~]# docker run -p 9011:9011 -d eureka-server:latest
0b2e245e29149787b79681c17b36ea6f4c45ba69bdcb580dca6a8f83282ef2e5 [root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b2e245e2914 eureka-server:latest "java -Xmx200m -Xms2…" 6 seconds ago Up 4 seconds 0.0.0.0:9011->9011/tcp mystifying_driscoll

6. 验证

使用浏览器访问: http://本机ip:9011

方法1:使用Jenkins构建Docker镜像 --SpringCloud的更多相关文章

  1. 方法2:使用Jenkins构建Docker镜像 --SpringCloud

    前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...

  2. Docker:使用Jenkins构建Docker镜像

    Docker  彭东稳  1年前 (2016-12-27)  10709次浏览  已收录  0个评论 一.介绍Jenkins Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从 ...

  3. jenkins构建docker镜像上传到harbor并发布到kubernetes

    很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...

  4. 使用Jenkins pipeline流水线构建docker镜像和发布

    新建一个pipeline job 选择Pipeline任务,然后进入配置页面. 对于Pipeline, Definition选择 "Pipeline script from SCM" ...

  5. Java SpringBoot 项目构建 Docker 镜像调优实践

    PS:已经在生产实践中验证,解决在生产环境下,网速带宽小,每次推拉镜像影响线上服务问题,按本文方式构建镜像,除了第一次拉取.推送.构建镜像慢,第二.三-次都是几百K大小传输,速度非常快,构建.打包.推 ...

  6. Jenkins集成Docker镜像实现自动发布

    1. 思路&流程 Jenkins集成Docker镜像实现自动发布与Jenkins发布mavne项目思路一样总体流程 为:Jenkins 拉去远端源码 -- gitl实现应用打包 -- jenk ...

  7. 打包应用和构建Docker镜像(docker在windows上)

    在构建Docker时编译应用 一般有两种方法在构建镜像时进行打包应用.第一种方法就是使用基本的镜像,该镜像包括应用平台和构建工具,因此在Dockerfile中,复制源代码到镜像中并在构建镜像时编译ap ...

  8. 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式

    前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少了解一些.前段时间研究OpenShift(paas的一种),发现了另外一种构建Docker镜像的方式:S2I ...

  9. Maven插件构建Docker镜像

    背景 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上.单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网 ...

随机推荐

  1. java如何判断溢出

    public int reverse2(int x) { double ans=0; int flag=1; if(x<0){ flag=-1; } x=x*flag; while(x>0 ...

  2. 57、Spark Streaming: window滑动窗口以及热点搜索词滑动统计案例

    一.window滑动窗口 1.概述 Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作.每次掉落在窗口内的RDD的数据, 会被聚合起来执行计算操作 ...

  3. 一个100%Go语言的Web-Term-SSH 堡垒机项目

    SSH-Fortress 1. What does it do? Make your cluster servers be more safe by expose your SSH connectio ...

  4. shell 查看目前机器listen的所有端口

    netstat -lnp 这条命令的意思是列出系统里面监听网络连接的端口号和相应的进程PID.参数说明:-t:表示列出TCP连接(也可以加上-u参数表示同时列出UDP网络连接)-l:表示列出正在网络监 ...

  5. 微信小程序 base64格式图片的显示及保存

    当我们拿到如下base64格式的图片(如下图)时, base64格式的图片数据: 如何显示 ? 使用image标签,src属性添加data:image/png;base64, (注意:若imgData ...

  6. Kafka(四) —— KafkaProducer源码阅读

    一.doSend()方法 Kafka中的每一条消息都对应一个ProducerRecord对象. public class ProducerRecord<K, V> { private fi ...

  7. JdkDynamicAopProxy 拦截器链的获得与递归执行

    JdkDynamicAopProxy类的invoke方法 1.获得拦截器链 List<Object> chain = this.advised.getInterceptorsAndDyna ...

  8. NLP自然语言处理

    转:https://blog.csdn.net/qq_17677907/article/details/86448214 1.有哪些文本表示模型,它们各有什么优缺点?   文本表示模型是研究如何表示文 ...

  9. Qt源码学习之路(2) QCoreApplication(1)

    QCoreApplication最重要的函数便是exec(),我们便从这个函数开始分析QCoreApplication都干了什么. 先列出exec()函数的源码 static int exec();/ ...

  10. SpringMVC 给请求路径加上统一前缀

    最开始想到的是通过硬编码的方式手动在每个路径上加上前缀, 后面发现这种方式太不智能了,万一要修改那还不得改死, Spring既然支持EL表达式, 那能不能通过EL表达式的方式去读取配置文件里面的属性来 ...