SpringCloud 教程 (四) 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文件加上插件:
<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 包需要纳入。
修改下配置文件:
server:port: 8761
eureka:instance:prefer-ip-address: trueclient:registerWithEureka: falsefetchRegistry: false
编写dockerfile文件:
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
FROM <image>FROM <image>:<tag>FROM <image> <digest>
FROM指令必须指定且需要在Dockerfile其他指令的前面,指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。后续的指令都依赖于该指令指定的image。当在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。
- VOLUME
格式为:
VOLUME ["/data"]
使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。
- ADD
从src目录复制文件到容器的dest。其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包
- ENTRYPOINT
指定Docker容器启动时执行的命令,可以多次设置,但是只有最后一个有效。
- EXPOSE
为Docker容器设置对外的端口号。在启动时,可以使用-p选项或者-P选项。
构建镜像
执行构建docker镜像maven命令:
mvn clean mvn package docker:build
构建eureka-server镜像成功。
同理构建service-hi镜像
- pom文件导入同eurek-server
- 修改下配置文件:
eureka:client:serviceUrl:defaultZone: http://eureka-server:8761/eureka/ # 这个需要改为eureka-server server:port: 8763 spring:application:name: service-hi
在这里说下:defaultZone发现服务的host改为镜像名。
dockefile 编写同eureka-server
构建镜像:
mvn clean mvn package docker:build
这时我们运行docke的eureka-server 和service-hi镜像:
docker run -p 8761: 8761 -t forezp/eureka-server docker run -p 8763: 8763 -t forezp/service-hi
访问localhost:8761
- 源码来源
转载于:https://www.cnblogs.com/allalongx/p/8383735.html
SpringCloud 教程 (四) docker部署spring cloud项目相关推荐
- 企业分布式微服务云SpringCloud SpringBoot mybatis (十一)docker部署spring cloud项目
一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
转:https://blog.csdn.net/forezp/article/details/70198649 一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的 ...
- Spring Cloud 第十一篇:docker部署spring cloud项目
一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...
- spring cloud构建互联网分布式微服务云平台-docker部署spring cloud项目
一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...
- java版spring cloud+spring boot+redis多租户社交电子商务平台 (十一)docker部署spring cloud项目...
一.docker简介 电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过 ...
- centos7卸载docker_使用 Docker 部署 Spring Cloud 项目详细步骤
优质文章,及时送达 准备工作 JDK1.8.Docker1.12.1.CentOS7.0 1.CentOS7.0下JDK1.8的安装 (1)到Oracle官网下载好 jdk-8u181-linux-x ...
- Linux中部署Spring Cloud项目
Linux中部署Spring Cloud项目 文章为本人在学习的过程中,记录部署过程,仅供参考学习.因本人经验不足,教程或有不妥之处,还望指正. 保姆级教程,敬请食用!!! 简介 在学习过程中,部署时 ...
- 快速使用 Docker 部署 Spring Boot 项目
如今 Docker 的使用已经非常普遍,特别是在一线互联网公司,使用 Docker 技术可以帮助企业快速水平扩展服务,从而达到弹性部署业务的能力.在云服务概念兴起之后,Docker 的使用场景和范围进 ...
- docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
最新文章
- php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?
- [问题解决]不使用PWM调速系统,彻底解决一个L298N带动两个电机却转速不同的问题
- JavaScript基础09-day11【原型对象、toString()、垃圾回收、数组、数组字面量、数组方法】
- Python 环境搭建,开发工具,基本语法
- P1040,jzoj1167-加分二叉树【树形dp】
- 08-spring学习-annotation配置
- Java ClassLoader getResources()方法与示例
- nginx php 协同工作,nginx和php之间工作原理
- linux账号登陆安全性相关命令
- (转)为Ubuntu安装翻译词典(星际译王)
- Confluence 6 嵌套用户组的示例
- 架构师重构代码的12条军规
- Atitit sumdoc everything index tech and index log 目录 1. 使用的tech 1 1.1. Atitit 日志记录的三个trace跟踪等级文件夹级
- 微信分享代码申请key教程
- physx中ray不碰撞某些物体的方法
- url 里面 等号_【Python成长之路】从零学爬虫给微信公众号阅读量作个弊:刷阅读量...
- 优秀的图文识别开源项目PandaOCR
- 领英工程VP:如何用 AI 消除 AI 偏见,打造高级人才推荐系统
- 李宏毅 线性代数 Introduction
- docker(一):基本组成与常用命令