我有多个烧瓶微服务,它们都相互通信,我如何配置docker?

时间:2017-03-05 18:02:18

标签: python docker flask dockerfile microservices

我有多个烧瓶微服务(这显然是混淆保护IP)

├── README.md
├── api_starter.py
├── app_api.py
├── service1
│   ├── __init__.py
│   ├── api.py
│   └── service1.py
├── service2
│   ├── __init__.py
│   ├── api.py
│   ├── service2.py
├── dags
│   ├── airflow_pipeline_runner.py
├── service3
│   ├── __init__.py
│   ├── api.py
│   ├── service3.py
├── service4
│   ├── __init__.py
│   ├── api.py
│   └── service4.py
├── service5
│   ├── __init__.py
│   ├── api.py
│   └── service5.py
├── service6
│   ├── __init__.py
│   ├── api.py
│   └── service6.py
├── requirements.txt
└── service7
    ├── __init__.py
    ├── api.py
    └── service7.py

这些微服务中的每一个都由api_starter运行。这些微服务中的每一个都相互通信。什么是将此应用程序停靠的最佳方法?我是否给每个微服务器一个docker文件,然后在目录的根目录中有一个docker-compose.yml?这些微服务中的每一个都相互通信。任何和所有

1 个答案:

答案 0 :(得分:1)

为了尊重docker的理念并充分利用微服务架构所提供的所有好处,您应该将每个微服务放在自己的容器中。

微服务架构的一些优点:

  • 改进了故障隔离
  • 消除对单一技术堆栈的长期承诺
  • 让新开发人员更容易理解其功能 服务
  • 更轻松的升级管理
  • 提高安全性
  • Resiliance
  • 更容易缩放
  • 更易于部署
  • ...

为此,您应首先为相关容器创建用户定义的网络。用户定义的网络具有内部DNS,因此您可以按名称解析同一网络上的其他容器ip。

然后,您需要将api_starter拆分为特定的微服务。

要完成的其他任务:

  • 为每个微服务指定持久数据路径(如果适用)
  • 指定要公开的网络端口。