我有多个相互通信的烧瓶微服务,我将如何配置 docker?
I have multiple flask microservices that all communicate with each other, how would I configure docker?
我有多个 flask 微服务(这显然是为了保护 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 文件,然后在目录的根目录中有一个 docker-compose.yml?这些微服务中的每一个都相互通信。任何和所有
为了尊重 docker 的理念并利用微服务架构必须提供的所有优点,您应该将每个微服务放在自己的容器中。
微服务架构的一些优势:
- 改进了故障隔离
- 消除对单一技术堆栈的长期承诺
- 使新开发人员更容易理解功能
服务
- 更轻松的升级管理
- 提高安全性
- 韧性
- 更容易扩展
- 更轻松的部署
- ...
为此,您应该首先为您的相关容器创建一个用户定义的网络。用户定义的网络具有内部 DNS,因此您可以通过名称解析同一网络上的其他容器 ip。
然后您需要将 api_starter
拆分为特定于微服务。
其他待办事项:
- 为每个微服务指定持久数据路径(如果适用)
- 指定要公开的网络端口。
我有多个 flask 微服务(这显然是为了保护 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 文件,然后在目录的根目录中有一个 docker-compose.yml?这些微服务中的每一个都相互通信。任何和所有
为了尊重 docker 的理念并利用微服务架构必须提供的所有优点,您应该将每个微服务放在自己的容器中。
微服务架构的一些优势:
- 改进了故障隔离
- 消除对单一技术堆栈的长期承诺
- 使新开发人员更容易理解功能 服务
- 更轻松的升级管理
- 提高安全性
- 韧性
- 更容易扩展
- 更轻松的部署
- ...
为此,您应该首先为您的相关容器创建一个用户定义的网络。用户定义的网络具有内部 DNS,因此您可以通过名称解析同一网络上的其他容器 ip。
然后您需要将 api_starter
拆分为特定于微服务。
其他待办事项:
- 为每个微服务指定持久数据路径(如果适用)
- 指定要公开的网络端口。