我有多个瓶子微服务,都相互沟通,我将如何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端口。