天天看点

Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目

Docker Compose - 编排微服务项目

目录

  • Docker Compose - 编排微服务项目
    • 1. 服务编排
      • 1.1 概念
      • 1.2 Docker Compose
        • 1.2.1 安装 Docker Compose
        • 1.2.2 卸载 Docker Compose
      • 1.3 编排 nginx + springboot
      • 1.4 编排微服务项目
        • 1.4.1 编排账单微服务

测试环境:

CentOS 7

1. 服务编排

1.1 概念

微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启动停止,维护的工作量会很大。来看下我们日常工作:

  • 要从

    Dockerfile build image

    或者去

    dockerhub

    拉取

    image

  • 要创建多个

    container

  • 要管理这些

    container

    (启动 / 停止 / 删除)

通过服务编排可以大量简化上面的工作

服务编排:按照一定的业务规则批量管理容器

1.2 Docker Compose

  • Docker Compose

    是一个编排多容器分布式部署的工具,提供命令集中管理容器化应用的完整开发周期,包括服务构建、启动和停止。

使用步骤:

  1. 利用

    Dockerfile

    定义运行环境镜像
  2. 使用

    docker-compose.yml

    定义组成应用的各服务
  3. 运行

    docker-compose up

    启动应用

1.2.1 安装 Docker Compose

Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目
# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
           

1.2.2 卸载 Docker Compose

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
           

1.3 编排 nginx + springboot

注意:本

SpringBoot

项目与文章 Docker - 入门篇 中的案例二相同

需求:使用

nginx

反向代理到

springboot

应用

  1. 创建

    docker-compose

    目录
mkdir ~/docker-compose
cd ~/docker-compose
           
  1. 编写

    docker-compose.yml

    文件
version: '3'
services:
  nginx:
  	image: nginx
  	ports:
    	- 80:80
  	links:
    	- app
  	volumes:
    	- ./nginx/conf.d:/etc/nginx/conf.d
	app:
    image: app
    expose:
		- "8080"
           
  1. 创建

    ./nginx/conf.d

    目录
mkdir -p ./nginx/conf.d
           
  1. ./nginx/conf.d

    目录下 编写

    app.conf

    文件
server {
    listen 80;
    access_log off;
    location / {
        proxy_pass http://app:8080/hello;
	} 
}
           
  1. ~/docker-compose

    目录下 使用

    docker-compose

    启动容器
docker-compose up -d # -d 表示守护模式启动
docker-compose down # 容器销毁
           
  1. 测试访问
Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目
http://192.168.2.*
           
Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目

1.4 编排微服务项目

需求:使用

docker-compose

对账单项目进行编排。

  • 在本次实战中,我们默认部署了

    mysql

    应用,故此处专注于微服务项目的部署(未编写明确的启动顺序)。

MySQL应用部署 / 项目相关文件 / 配置及

jar

包生成:参考文章 Docker实战 - 部署微服务项目

项目结构:

  • bill-eureka

    :注册中心,端口号 - 9093
  • bill-config

    :配置微服务,端口号 - 10020
  • bill-gateway

    :网关微服务,端口号 - 10010
  • bill-service

    :账单微服务,端口号 - 9091

1.4.1 编排账单微服务

  1. 创建一个新的目录 -

    docker-bill

  2. docker-bill

    目录下分别创建

    bill-eureka

    bill-config

    bill-gateway

    bill-servuce

    目录,并且将相应的

    jar

    包文件放在相应的目录下
  3. 在每个微服务目录下新建一个

    Dockerfile

    ,内容如下,以

    bill-eureka

    服务作为参照,其它微服务都类似修改:
FROM java:8
MAINTAINER murphy <[email protected]>

ADD eureka-server.jar eureka.jar
CMD ["java", "-jar", "eureka.jar"]
           
Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目

4. 在

docker-bill

目录下新建微服务编排文件

docker-compose-app.yml

,内容如下:

version: '3'
services:
  bill-eureka:
    image: docker-bill/bill-eureka:0.0.1 # 指定镜像名称
    build: ./bill-eureka # 指定Dockfile所在路径
    container_name: bill-eureka # 指定启动容器名称
    ports:
      - 9093:9093
    restart: always # 关机或者重启机器时,docker同时重启容器
  bill-config:
    image: docker-bill/bill-config:0.0.1
    build: ./bill-config
    container_name: bill-config
    ports:
      - 10020:10020
    restart: always
  bill-gateway:
    image: docker-bill/bill-gateway:0.0.1
    build: ./bill-gateway
    container_name: bill-gateway
    ports:
      - 10010:10010
    restart: always
  bill-service:
    image: docker-bill/bill-service:0.0.1
    build: ./bill-service
    container_name: bill-service
    ports:
      - 9091:9091
    restart: always
           

总体结构

Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目

docker-bill

├── docker-compose-app.yml

└── bill-config

├──── Dockerfile

└──── config-service.jar

└── bill-eureka

├──── Dockerfile

└──── eureka-server.jar

└── bill-gateway

├──── Dockerfile

└──── gateway-server.jar

└── bill-service

├──── Dockerfile

└──── bill-service.jar

注意:

jar

包名称自定义

  1. docker-bill

    目录下,启动所有微服务容器,执行如下命令:
docker-compose -f docker-compose-app.yml up -d  
           

运行截图

Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目

测试访问

Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目

6. 销毁所有微服务容器,执行如下命令:

docker-compose -f docker-compose-app.yml down
           

运行截图

Docker Compose - 编排微服务项目Docker Compose - 编排微服务项目

至此,成功通过Docker Compose实现微服务项目的编排。