Как разделить на разностные проекты архитектуру docker-compose и отдельные проекты? - PullRequest
0 голосов
/ 14 апреля 2019

Я новичок в docker-compose и пытаюсь создать архитектуру, которая может использоваться несколькими проектами.Представьте, что мои 2 услуги - это поток воздуха и postgres.Я хотел бы иметь возможность контроля версий моей архитектуры отдельно от моих проектов.

Например, в настоящее время у меня есть проекты: project_architecture и project_individual .

  • project_architecture включает всю мою информацию о докере, например, 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

Если вы посмотрите ближе, у меня есть папка докера в моем индивидуальном проекте, где я планировалразработать собственные группы обеспечения доступности баз данных и сценарии базы данных, которые будут использоваться в проектах 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)

1 Ответ

0 голосов
/ 14 апреля 2019

Вероятно, вы можете добавить больше сервисов для каждого из ваших отдельных проектов в состав Docker, но если вы хотите разделить развертывание, проще всего было бы создать несколько файлов Docker-Compose.

Таким образом, вы можете получить файл docker-compose.common.yml с подробным описанием ваших общих служб, а затем использовать шаг extends docker-compose для настройки ваших конфигураций.

Вы даже можете вызывать несколько файлов docker-compose одновременно во время docker-compose up, используя параметр -f:

docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

...