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 配置的方式即可完成服务化,对于应用无入侵,设计的目的还是服务于自身的业务为主. 微服 ...
随机推荐
- Oracle 后台进程(六)PMON进程
一.PMON简介 二.PMON的工作内容如下: 1.监控后台进程运行状况 2.如果某些进程异常中断,PMON去释放会话资源以及占用的锁LOCK 3.更新事务表的标志以及清除事务XID的标记 4.清除异 ...
- springboot与springcloud区别:
- os/exec
用go来执行命令 cmd := exec.Command(命令,参数1,参数2....) out, _ := cmd.Output() data := string(out) Output得到的是正常 ...
- CodeForces - 999C Alphabetic Removals
C - Alphabetic Removals ≤k≤n≤4⋅105) - the length of the string and the number of letters Polycarp wi ...
- Appium Inspector定位Webview/H5页面元素
目录 操作步骤 Python操作该混合App代码 Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 翻墙 + 使用Chrome://ins ...
- ImportError: No module named pytz
xxx@hostname:/opt/xx/cc$ python manage.py runserver Traceback (most recent call last): File , in < ...
- CSP2019懵逼记
CSP2019 考场二日游 CJ 旅游团 本来我是准备咕掉的, 但是被强 ♂ 烈要求更博了 Day -INF ~ Day -1 专题巩固和联考 前面半个月疯狂爆炸 后面半个月状态恢复了, 考得还行 联 ...
- httpd Apache服务
TCP/IP协议 跨Internet的主机间通讯 在建立通信连接的每一端,进程间的传输要有两个标志: IP地址和端口号,合称为套接字地址 socket address 客户机套接字地址定义了一个唯一的 ...
- Infralution.Localization.Wpf
WPF Localization Using RESX Files Once you have downloaded the source code and built it, add a refer ...
- <JavaScript> 关于闭包和this对象
1.this指向windows是如何得出的 var name = "The Window"; var object = { name : "My Object" ...