#### 使用 Compose 大致有三个步骤
* 使用 Dockerfile(或其他方式)定义应用程序环境,以便在任何地方重现该环境。
* 在 docker-compose.yml 文件中定义组成应用程序的服务,以便各个服务在一个隔离的环境中一起运行。
* 运行 docker-compose up 命令,启动并运行整个应用程序。
上一节实验我们通过 Docker 运行了 Eureka Server,不过运行的时候采用了`docker run`的方式。那我们这次就拿上一节的 Docker 镜像并通过`Compose`来运行。
* 将上一节实验源码拷贝过来
~~~bash
wget https://labfile.oss.aliyuncs.com/courses/1360/microservice-eureka-server-12.zip
unzip microservice-eureka-server-12.zip
cd microservice-eureka-server
~~~
* 在项目根目录添加`docker-compose.yml`文件
~~~yml
version: '3.1' # 表示该docker-compose.yml文件使用的是Version 3.1 文件格式
services:
eureka-server: # 指定docker容器名称
image: spring-cloud-eureka-server:0.0.1-SNAPSHOT #指定镜像名称,这里采用上一步构建出来的镜像。
ports:
- 8761:8761 # 指定端口映射,类似docker run的-p选项,注意使用字符串形式
~~~
* maven 构建项目和 Docker 镜像
~~~bash
mvn clean package -DskipTests && mvn dockerfile:build
~~~
你也可以通过`docker images`指令查看是否有一个名称为`spring-cloud-eureka-server:0.0.1-SNAPSHOT`的镜像存在。
* compose 运行
~~~bash
docker-compose up
~~~
控制台会输出如下信息:
~~~bash
eureka-server_1 | 2019-06-09 16:04:47.565 INFO 1 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0
eureka-server_1 | 2019-06-09 16:04:47.576 INFO 1 --- [ main] o.s.c.n.e.s.EurekaServiceRegistry : Registering application UNKNOWN with eureka with status UP
eureka-server_1 | 2019-06-09 16:04:47.583 INFO 1 --- [ Thread-13] o.s.c.n.e.server.EurekaServerBootstrap : Setting the eureka configuration..
eureka-server_1 | 2019-06-09 16:04:47.590 INFO 1 --- [ Thread-13] o.s.c.n.e.server.EurekaServerBootstrap : Eureka data center value eureka.datacenter is not set, defaulting to default
eureka-server_1 | 2019-06-09 16:04:47.597 INFO 1 --- [ Thread-13] o.s.c.n.e.server.EurekaServerBootstrap : Eureka environment value eureka.environment is not set, defaulting to test
eureka-server_1 | 2019-06-09 16:04:47.698 INFO 1 --- [ Thread-13] o.s.c.n.e.server.EurekaServerBootstrap : isAws returned false
eureka-server_1 | 2019-06-09 16:04:47.700 INFO 1 --- [ Thread-13] o.s.c.n.e.server.EurekaServerBootstrap : Initialized server context
eureka-server_1 | 2019-06-09 16:04:47.700 INFO 1 --- [ Thread-13] c.n.e.r.PeerAwareInstanceRegistryImpl : Got 1 instances from neighboring DS node
eureka-server_1 | 2019-06-09 16:04:47.701 INFO 1 --- [ Thread-13] c.n.e.r.PeerAwareInstanceRegistryImpl : Renew threshold is: 1
eureka-server_1 | 2019-06-09 16:04:47.702 INFO 1 --- [ Thread-13] c.n.e.r.PeerAwareInstanceRegistryImpl : Changing status to UP
eureka-server_1 | 2019-06-09 16:04:47.785 INFO 1 --- [ Thread-13] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
eureka-server_1 | 2019-06-09 16:04:47.791 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8761 (http) with context path ''
eureka-server_1 | 2019-06-09 16:04:47.796 INFO 1 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8761
eureka-server_1 | 2019-06-09 16:04:47.801 INFO 1 --- [ main] .c.m.MicroserviceEurekaServerApplication : Started MicroserviceEurekaServerApplication in 19.633 seconds (JVM running for 21.718)
eureka-server_1 | 2019-06-09 16:05:47.717 INFO 1 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Running the evict task with compensationTime 0ms
eureka-server_1 | 2019-06-09 16:06:47.717 INFO 1 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Running the evict task with compensationTime 68ms
~~~
然后访问浏览器`http://localhost:8761`:

- 微服务开发框架 SpringCloud
- 单体应用
- 如何解决单体应用架构中存在的问题
- 如何实现微服务架构以及技术选型
- Spring Cloud 特点
- 开始使用 Spring Cloud 实战微服务
- 快速搭建开发脚手架
- 编写服务提供者-用户微服务
- 编写服务消费者【电影微服务】
- 整合 Spring Boot Actuator
- 开始整合
- 微服务注册与发现
- 编写服务发现服务
- 注册微服务至 Eureka Server
- 更新服务提供者 (用户微服务)
- 更新服务消费者 (电影微服务)
- 查看注册结果
- Ribbon 客户端负载均衡
- Ribbon 简介
- 引入 Ribbon
- Ribbon 入门
- Feign 声明式 REST 调用
- 改造项目
- Hystrix 容错处理
- 实现容错的手段
- Hystrix 简介
- 开始使用
- 测试
- Zuul 网关
- 网关是什么
- Spring Cloud Zuul 介绍
- Zuul 入门使用
- 网关测试
- Spring Cloud Config 配置管理
- 配置中心的作用
- Spring Cloud Config 简介
- Spring Cloud Config 使用
- Sleuth 与 Zipkin 结合图形化展示
- 分布式追踪相关基础概念
- Spring Cloud Sleuth 介绍及使用
- Zipin 简介
- Docker 入门
- 云原生概念
- Docker 容器介绍
- Docker 常用命令
- 微服务运行在 Docker 之上
- Dockerfile 及其常见指令介绍
- 改造 Eureka Server 微服务
- Docker Compose 编排微服务
- 安装 Compose
- Compose 快速入门
- Compose 编排 SpringCloud微服务
- 将 Eureka 等微服务运行在 Docker 容器中
- Docker-Compose 编排文件的编写
- 通过 Docker Compose 启动、停止
- Compose编排Spring Cloud微服务2
- Docker-Compose 来部署一个双节点的 Eureka 集群
