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启动的更多相关文章

  1. 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

    本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...

  2. 使用Docker Compose编排Spring Cloud微服务

    文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...

  3. Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin

    前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ...

  4. spring cloud微服务实践五

    本篇我们来看看怎么实现spring cloud的配置中心. 在分布式系统中,特别是微服务架构下,可能会存在许多的服务,每个服务都会存在一个或多个的配置文件.那怎么多的配置文件的管理就会成为一个大问题. ...

  5. Spring Cloud微服务系列文,服务调用框架Feign

    之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON.    这种 ...

  6. Spring Cloud 微服务

    https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247486301&idx=2&sn=f6d45860269b61 ...

  7. 一张图了解Spring Cloud微服务架构

    Spring Cloud作为当下主流的微服务框架,可以让我们更简单快捷地实现微服务架构.Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟.经得起实际考验的服务框架组合起来 ...

  8. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  9. Dubbo和Spring Cloud微服务架构比较

    Dubbo 出生于阿里系,是阿里巴巴服务化治理的核心框架,并被广泛应用于中国各互联网公司:只需要通过 Spring 配置的方式即可完成服务化,对于应用无入侵,设计的目的还是服务于自身的业务为主. 微服 ...

随机推荐

  1. FTPClient上传下载等

    package com.lct.conference.controller.MonitorManagement.cofer; import org.apache.commons.net.ftp.FTP ...

  2. (转)python正向连接后门

    python正向连接后门 PHITHON 2014 四月 12 00:12   阅读:16670    Python    python, cmd后门, socket     python在linux ...

  3. python写爬虫遇到需要解码js一些记录

    js在线格式化网站 https://beautifier.io/ Python 执行 JS 代码 NodeJS 安装方式 先解决 JS 环境,这里推荐安装 Node.js ,安装方便,执行效率也高. ...

  4. 关于要python爬虫你需要的一些网址和信息[待补充]

    phantomjs无头浏览器(基本不用) http://phantomjs.org/download.html 如果报 下面这种错误 [root@hwgz01 ~]# phantomjs phanto ...

  5. 内存管理2-@class关键字

    Review: 给对象发送消息,进行相应的计数器操作. Retain消息:使计数器+1,改方法返回对象本身 Release消息:使计数器-1(并不代表释放对象) retainCount消息:获得对象当 ...

  6. [题解] [SDOI2017] 序列计数

    题面 题解 和 SDOI2015 序列统计 比较像 这个无非就是把乘改成了加, NTT 改成了 MTT 再加上了一个小小的容斥 : 拿所有方案减去不合法方案即可 Code #include <a ...

  7. Golang switch语句总结

    switch 语句基本结构 switch 条件表达式 { case 常量表达式1: 语句 1 case 常量表达式2: 语句 2 . . . case 常量表达式n: 语句 n default: 语句 ...

  8. 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈 绝对值?相对值

    小结: 1. 常数时间内检索到最小元素 2.存储 存储绝对值?相对值 存储差异 3. java-ide-debug 最小栈 - 力扣(LeetCode)https://leetcode-cn.com/ ...

  9. js传值到后台乱码问题

    1.前台js的路径 var addurl1="ldcOrderController.do?goods&orderGoodsExtra="+encodeURI(encodeU ...

  10. Swift 可选(Optionals)类型

    Swift 的可选(Optional)类型,用于处理值缺失的情况.可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值". Swfit语言定义后缀?作为命 ...