docker - 如何将 docker-compose 架构和单个项目分成不同的项目?
问题描述
我是 docker-compose 的新手,我正在尝试创建一个可供多个项目使用的架构。想象一下,我的 2 个服务是气流和 postgres。我希望能够对我的架构与我的项目分开进行版本控制。
例如,目前我有项目:project_architecture和project_individual。
- project_architecture 包括我所有的 docker 信息,比如 docker-compose.yml
- project_individual 是一个 python 项目,我有函数来获取数据和转换它
我希望能够分离这些项目的原因是我可以独立地对每个项目进行差异存储库和版本控制,而不是相互耦合。此外,如果我成功了,我可以创建新的“个人”项目并重用架构。
project_architecture:
── README.md
├── config
│ ├── airflow_container.env
│ ├── postgres.env
├── docker-compose.yml
├── services
│ └── postgres
│ ├── 00_create_user.sh
└── shared
├── airflow_requirements.txt
├── dags
│ ├── example_dag.py
project_individual:
├── __init__.py
├── data
│ ├── __init__.py
│ ├── data.py
├── docker
│ ├── create_main_tables.sql
│ └── my_specific_dag.py
├── func
│ ├── __init__.py
| └── functions.py
如果你看得更仔细,我的个人项目上有一个 docker 文件夹,我计划在其中开发自己的 DAG 和数据库脚本,它们将分别用于 project_architecture Airflow 和 Postgres。此外,我想从我的项目中调用特定的函数、方法、类,比如data/data.py。
目前,在我的 docker-compose.yml 文件中,我正在尝试像这样挂载一个外部 DAG(这不起作用):
volumes:
- ${PWD}/../project_individual/docker/my_specific_dag.py:/usr/local/airflow/dags/my_specific_dag.py
我不得不认为我所描述的问题已经被使用带有气流的容器解决方案的公司解决了。我可以想象会有一个团队管理中央气流,而开发人员在他们自己的团队中生成他们的项目与架构分离。我很乐意接受任何意见或建议。我的最终目标是确保我的 2 个项目不耦合,并且我可以扩展可以重用相同架构的项目(在 project_architecture 上描述)
解决方案
您可能可以为每个单独的项目添加更多服务到您的 docker compose,但如果您想单独部署,最简单的方法是创建多个 docker-compose 文件。
这样,您可以有一个 docker-compose.common.yml 文件来详细说明您的公共服务,然后使用 docker extends
-compose 的步骤来自定义您的配置。
docker-compose up
您甚至可以在使用-f
选项期间一次调用多个 docker-compose 文件:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
推荐阅读
- c++ - 对于其类声明之外的静态成员初始化,是否有必要提供其类型?
- node.js - 即使路线存在,Express 也会返回 404
- jmeter - 从 JMeter 测试计划中获取最大并发并限制其值
- javascript - 使用 Angular 和 Ionic 突出显示所选项目
- ios - 与父 UIView 容器的安全区域相比,如果您创建相对于父 UIView 容器本身的约束,是否有任何区别?
- java - 单线程调度执行服务
- laravel - For 循环无法与 jQuery axois 函数一起正常工作
- node.js - passport.authenticate(本地策略)无法获取请求正文用户名和密码并返回消息(“缺少凭据”)
- javascript - 大型数组中的日期格式 JavaScript
- arrays - 查找搜索和排序算法中使用的中间元素/索引的最佳方法?