我有多个瓶子微服务,都相互沟通,我将如何configurationdocker?

我有多个烧瓶微服务(这显然是混淆保护知识产权)

├── 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运行。 每个微服务都相互沟通。 dockerize这个应用程序的最佳方式是什么? 我是否为每个微服务提供了一个docker文件,然后在目录的根目录下有一个docker-compose.yml文件? 每个微服务都相互沟通。 任何和所有

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

微服务架构的一些优点:

  • 改进了故障隔离
  • 消除对单个技术堆栈的长期承诺
  • 使新开发人员更容易理解服务的function
  • 更轻松的升级pipe理
  • 改进的安全
  • Resiliance
  • 更容易缩放
  • 更简单的部署

为了做到这一点,您应该首先为您的相关容器创build一个用户定义的networking。 用户定义的networking具有内部DNS,因此您可以通过名称在同一networking上parsing其他容器的IP。

那么你需要将你的api_starter为特定的微服务。

其他任务要做:

  • 指定每个微服务的持久数据path(如果适用)
  • 指定要公开的networking端口。