spring cloud微服务docker启动
1. 背景
将系统拆分成微服务,一个系统可能拆分成十几个服务,服务太多会影响发布和管理,所以容器话之后易于管理和版本发布,鉴于此将spring cloud微服无docker容器化。
2.依赖环境
Centos7.5,Maven环境 和 Docker环境
本人机器不是Windows系统,直接装的Centos系统,可能系统有差异,Windows下应该也可以,没有具体测试。
3.编写demo程序
@RestController
public class ProviderController { private static Logger logger = LoggerFactory.getLogger(ProviderController.class); @RequestMapping("/hello")
public String hello(){
logger.info("hello debug world "+new Date());
logger.debug("hello debug world "+new Date());
logger.error("hello debug world "+new Date());
return "Hello World";
} }
4.先用maven编译
在编译时会下载相应的依赖jar包。
# 在模块下面,具有pom文件的那层,执行以下命令
mvn clean && mvn install
5.编写Dockerfile
FROM openjdk:-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
这是一个简单的Dockerfile,
From是需要的依赖,
COPY是将target下编译好的包拷贝到docker虚拟环境的根目录下
ENTRYPOINT是启动后要执行的命令
6.docker命令编译image
docker build -t docker-cloud/provider:1.0 .
编译完成之后执行查看镜像命令,会看到编译出来的镜像,可以制定不同的tag版本。
# 查看docker镜像
docker images
7.启动编译好的镜像
docker run --name provider -p : -d doceker-cloud/provider:1.0
--name 指定启动的容器名称
-p 8090:8090 将本地的8090端口和docker容器的8090端口做映射
-d 是后台运行docker程序
最后面根的是要启动的镜像,我选择启动的是docker-cloud/provider镜像,并且TAG是1.0的版本。
8.启动之后查看docker有没有启动
#查看docker启动的进程
docker ps
9. 启动之后可以看一下容器里面的样子
docker exec -it provider /bin/sh
其中app.jar就是我们打包镜像时拷贝过去的jar文件,logs目录是我打的日志
10.我想看日志怎么办?
在docker里面命令是很有限的,很多命令用不了,像tailf这种命令就没法实时查看日志,所以我们就要把日志文件挂载到磁盘的目录下面。
docker run --name provider -v /home/zhaowei/docker-provider/logs:/logs -d docker-cloud/provider:1.0
-v 就是将目录 /home/zhaowei/docker-provider/logs 挂载到容器的logs目录下,这样产生的日志文件就直接可以在磁盘目录下查看了。
11. 我的想改启动端口怎么办?
spring cloud程序一般可以在applicaiton.properties里指定启动的端口号,但这样有个局限,就是写死了,但是也无所谓,命令行可以指定端口参数,命令行里的参数优先级比配置文件的高,所以在启动的时候指定端口参数就可以了,但是我们的启动参数是写在Dockerfile里面的,所以这里要修改Dockerfile文件了。
FROM openjdk:-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["sh","-c","java ${JAVA_OPTS} -jar /app.jar ${0} ${@}"]
我们在启动docker容器时命令是这样的:
docker run --name provider2 -p : -v /home/zhaowei/docker-provider/logs:/logs -d docker-cloud/provider:2.0 --server.port=
12. 其他
demo:https://github.com/liuzwei/docker-app.git
参考:这里是更详细的说明 https://github.com/spring-guides/top-spring-boot-docker
spring cloud微服务docker启动的更多相关文章
- 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用
本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...
- 使用Docker Compose编排Spring Cloud微服务
文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...
- Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin
前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ...
- spring cloud微服务实践五
本篇我们来看看怎么实现spring cloud的配置中心. 在分布式系统中,特别是微服务架构下,可能会存在许多的服务,每个服务都会存在一个或多个的配置文件.那怎么多的配置文件的管理就会成为一个大问题. ...
- Spring Cloud微服务系列文,服务调用框架Feign
之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON. 这种 ...
- Spring Cloud 微服务
https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247486301&idx=2&sn=f6d45860269b61 ...
- 一张图了解Spring Cloud微服务架构
Spring Cloud作为当下主流的微服务框架,可以让我们更简单快捷地实现微服务架构.Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟.经得起实际考验的服务框架组合起来 ...
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- Dubbo和Spring Cloud微服务架构比较
Dubbo 出生于阿里系,是阿里巴巴服务化治理的核心框架,并被广泛应用于中国各互联网公司:只需要通过 Spring 配置的方式即可完成服务化,对于应用无入侵,设计的目的还是服务于自身的业务为主. 微服 ...
随机推荐
- FTPClient上传下载等
package com.lct.conference.controller.MonitorManagement.cofer; import org.apache.commons.net.ftp.FTP ...
- (转)python正向连接后门
python正向连接后门 PHITHON 2014 四月 12 00:12 阅读:16670 Python python, cmd后门, socket python在linux ...
- python写爬虫遇到需要解码js一些记录
js在线格式化网站 https://beautifier.io/ Python 执行 JS 代码 NodeJS 安装方式 先解决 JS 环境,这里推荐安装 Node.js ,安装方便,执行效率也高. ...
- 关于要python爬虫你需要的一些网址和信息[待补充]
phantomjs无头浏览器(基本不用) http://phantomjs.org/download.html 如果报 下面这种错误 [root@hwgz01 ~]# phantomjs phanto ...
- 内存管理2-@class关键字
Review: 给对象发送消息,进行相应的计数器操作. Retain消息:使计数器+1,改方法返回对象本身 Release消息:使计数器-1(并不代表释放对象) retainCount消息:获得对象当 ...
- [题解] [SDOI2017] 序列计数
题面 题解 和 SDOI2015 序列统计 比较像 这个无非就是把乘改成了加, NTT 改成了 MTT 再加上了一个小小的容斥 : 拿所有方案减去不合法方案即可 Code #include <a ...
- Golang switch语句总结
switch 语句基本结构 switch 条件表达式 { case 常量表达式1: 语句 1 case 常量表达式2: 语句 2 . . . case 常量表达式n: 语句 n default: 语句 ...
- 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈 绝对值?相对值
小结: 1. 常数时间内检索到最小元素 2.存储 存储绝对值?相对值 存储差异 3. java-ide-debug 最小栈 - 力扣(LeetCode)https://leetcode-cn.com/ ...
- js传值到后台乱码问题
1.前台js的路径 var addurl1="ldcOrderController.do?goods&orderGoodsExtra="+encodeURI(encodeU ...
- Swift 可选(Optionals)类型
Swift 的可选(Optional)类型,用于处理值缺失的情况.可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值". Swfit语言定义后缀?作为命 ...