企业分布式微服务云SpringCloud SpringBoot mybatis (十一)docker部署spring cloud项目
一、docker简介
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker 的优点
1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。3、节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
上面文字参考了相关文章;另,关于docker 的安装和基本的使用见相关教程。
二、准备工作
环境条件:
- linux系统,不建议windows
- docker最新版本
- jdk 1.8
- maven3.0
本文采用的工程来自第一篇文章的工程,采用maven的方式去构建项目,并采用docker-maven-plugin去构建docker镜像。
三、改造工程、构建镜像
改造eureka-server工程
在pom文件加上插件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<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>${docker.image.prefix}/${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>
|
Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。
- imageName指定了镜像的名字,本例为 forep/eureka-server
- dockerDirectory指定 Dockerfile 的位置
- resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。
修改下配置文件:
1
2
3
4
5
6
7
8
|
server:
port: 8761
eureka:
instance:
prefer-ip-address: true
client:
registerWithEureka: false
fetchRegistry: false <br>
|
编写dockerfile文件:
1
2
3
4
5
6
|
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD eureka-server- 0.0 . 1 -SNAPSHOT.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT [ "java" , "-Djava.security.egd=file:/dev/./urandom" , "-jar" , "/app.jar" ]
EXPOSE 8761
|
docker file编写指令:
- FROM
123
docker file编写指令:
FROM
FROM指令必须指定且需要在Dockerfile其他指令的前面,指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。后续的指令都依赖于该指令指定的image。当在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。
- VOLUME
格式为:
- 1
VOLUME [
"/data"
]
使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。
- ADD
从src目录复制文件到容器的dest。其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包
- ENTRYPOINT
指定Docker容器启动时执行的命令,可以多次设置,但是只有最后一个有效。
- EXPOSE
为Docker容器设置对外的端口号。在启动时,可以使用-p选项或者-P选项。
构建镜像
执行构建docker镜像maven命令:
1
2
|
mvn clean
mvn package docker:build
|
构建eureka-server镜像成功。
同理构建service-hi镜像
- pom文件导入同eurek-server
- 修改下配置文件:
- 123456789
eureka:
client:
serviceUrl:
defaultZone: http:
//eureka-server:8761/eureka/ # 这个需要改为eureka-server
server:
port:
8763
spring:
application:
name: service-hi
架构代码如下 :
资料和源码来源地址
Spring Cloud大型企业分布式微服务云架构源码请加企鹅求求:一七九一七四三三八零
转载于:https://www.cnblogs.com/sunnysunny/p/10460355.html
企业分布式微服务云SpringCloud SpringBoot mybatis (十一)docker部署spring cloud项目相关推荐
- (九)企业分布式微服务云SpringCloud SpringBoot mybatis-服务链路追踪(Spring Cloud Sleuth)...
这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Add sleuth to the classpath of a Spring Bo ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (二)Spring Boot属性配置文件详解...
相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (九)Spring Boot多数据源配置与使用(JdbcTemplate支持)...
之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...
Spring-data-jpa支持 对于数据源的配置可以沿用上例中DataSourceConfig的实现. 新增对第一数据源的JPA配置,注意两处注释的地方,用于指定数据源对应的Entity实体和Re ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis - 服务消费者(Feign)
一.Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注 ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (九)服务链路追踪(Spring Cloud Sleuth)...
这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Add sleuth to the classpath of a Spring Bo ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (七)高可用的分布式配置中心(Spring Cloud Config)...
讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一. ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (五)路由网关(zuul)
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (二)服务消费者(rest+ribbon)
一.ribbon简介 Ribbon is a client side load balancer which gives you a lot of control over the behaviour ...
最新文章
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
- Scala函数的调用
- 继承与多态——动手又动脑
- 10进制转16进制,16进制转10进制,随机出一个6位十六进制颜色值
- Facebook开源NLP建模框架PyText,从论文到产品部署只需数天
- canvas并查集画随机迷宫
- LOL手游2.3版本终于来临,国服玩家满意新增的皮肤吗?
- NOIP模拟测试18「引子·可爱宝贝精灵·相互再归的鹅妈妈」
- uva 11925——Generating Permutations
- redis 缓存 key常量命名规则
- layui 折叠面板使用无效问题
- Android 系统(200)---Android build.prop参数详解
- Hello Quartz (第二部分)
- 书籍折页是什么效果_Word的书籍折页是什么
- CSS3径向渐变radial-gradient实现波浪边框和内倒角
- BP神经网络——如何进行权值的初始化
- 了解Python编程——Python学习(一)
- Mongodb 可视化工具 mongochef
- S变化广义s变化和时频域特征-matlab
- php 程序性能分析工具,php的性能分析工具:xhprof