Рубрики
Uncategorized

Использование контейнеров данных для загрузки среды разработки в считанные секунды

Одной из самых трудоемких частей загрузки среды разработки Docker является инициализацией данных … Теги с Docker, DevOps, Database, Tutorial.

Одной из самых трудоемких частей загрузки среды разработки докеров является инициализация баз данных. Шаблон контейнера данных Получается вокруг этого препятствия, воспользовавшись некоторыми менее известными особенностями объемов. С контейнерами данных вы можете легко распределить, поддерживать и загрузить данные семян базы данных .

Контейнеры передачи данных являются обширным инструментом для построения нирваны среды развития: Загрузка среды с одной командой, которая работает каждый раз Отказ

Вы, вероятно, уже используете тома, чтобы сэкономить вам некоторое время, работая с базами данных во время разработки; Если один из ваших контейнеров разработчиков вылетает, тома помешает вам потерять состояние базы данных. Но интересно, у докеров тома имеют некоторые крутые причуды, которые мы можем использовать для рисунка контейнеров данных.

В этом посте я:

  • Объясните, почему контейнеры передачи данных являются лучшим способом инициализации ваших баз данных.
  • Объясните, как контейнеры данных работают, используя преимущества некоторого необычного поведения, которое не присутствует в других томах реализациях, таких как объемы Kubernetes.
  • Прогуляйтесь по трудному примеру о том, как это сделать.

Просто хочу код? Получить это здесь и загрузите его с Docker-Compose up (или Slimping up !)

Стандартные методы для инициализации баз данных

При разработке использования Docker есть три подхода, которые обычно используются разработчики для настройки их баз данных. Все они имеют серьезные недостатки.

1) Инициализируйте свою базу данных вручную

Большинство людей начинают с настройки своих баз данных вручную. Но это имеет несколько серьезных недостатков:

  • Этот подход может быть очень трудоемким. Например, легко провести целый день, копируя данные, которые вам нужны от постановки и выясняют, как с ней сеять базу данных. И, если вы потеряете свой том, вы должны сделать это снова.
  • Трудно поддерживать со временем. Однажды я работал с командой, которая боялась уничтожить свою базу данных, так как они знали, что им придется повторно инициализировать его позже. В результате они сделают все возможное, чтобы избежать работы по определенным проектам, чтобы они могли избавить себя от боли разрушения и инициализации своей базы данных.

2) Инициализируйте свою базу данных с помощью скрипта

Использование сценария может сэкономить вам много ручной работы. Но это поставляется со своим собственным набором головных болей:

  • Сценарий может занять некоторое время, чтобы запустить время загрузки среды.
  • В спешке всех других разработчиков работ приходится делать, легко откладывать поддержание сценария. Поскольку схема базы данных изменяется со временем, скрипт разрывается, а затем вы должны проводить время отладки.

3) Используйте удаленную базу данных

Используя удаленную базу данных — как правило, ваша база данных постановки — это, безусловно, быстрее, чем запущенные скрипты или инициализация базы данных вручную. Но есть большой недостаток: вы разделяете базу данных с другими разработчиками. Это означает, что у вас нет стабильной среды развития. Все, что нужно, это один разборщик, понижающий данные, чтобы разрушить ваш день.

Лучший способ: контейнеры данных

Контейнеры данных — это контейнеры, которые хранят состояние вашей базы данных и развернуты как любой другой контейнер в вашем Docker Compose File. Они используют преимущества некоторых причудливых томов докеров, чтобы скопировать данные из контейнера в базу данных, чтобы база данных полностью инициализирована при запуске.

Чтобы увидеть, как тома может ускорить работу вашей разработки с базами данных, давайте примет пример из Магда Система каталога данных. Вот фрагмент от Магда Docker Compose файл:

services:
  postgres:
    image: "gcr.io/magda-221800/magda-postgres:0.0.50-2"
    volumes:
      - 'db-data:/data'
    environment:
      - "PGDATA=/data"

  postgres-data:
    image: "gcr.io/magda-221800/magda-postgres-data:0.0.50-2"
    entrypoint: "tail -f /dev/null"
    volumes:
      - 'db-data:/data'

volumes:
  db-data:

Когда вы запустите Docker-Compose up В MAGDA REPO все начинаются все службы MAGDA, а база данных Postgres автоматически инициализируется.

Как это работает

Эта настройка принимает преимущества двух особенностей Docker Volumes:

1) Docker копирует любые файлы, замаскированные томами в объем Отказ Пример MAGDA имеет следующее в своем документе Pocker Compose.

  postgres-data:
    image: "gcr.io/magda-221800/magda-postgres-data:0.0.50-2"
    entrypoint: "tail -f /dev/null"
    volumes:
      - 'db-data:/data'

Когда postgrees-data Начинается, он устанавливает громкость в /данные . Потому что мы построили gcr.io/magda-221800/magda-postgres-data Изображение для уже есть файлы базы данных в /данные , Docker копирует эти файлы в объеме.

2) Тома могут быть разделены между контейнерами. Так что любые файлы, написанные на DB-Data по postgrees-data видны в Postgres контейнер, потому что Postgres Контейнер также смонтирует DB-Data объем:

  postgres:
    image: "gcr.io/magda-221800/magda-postgres:0.0.50-2"
    environment:
      - "PGDATA=/data"
    volumes:
      - 'db-data:/data'

Сделайте это все вместе, когда вы бежите Docker-Compose up , происходит следующее:

  • Docker Copy /данные от postgrees-data к DB-Data объем
  • Докер начинает Postgres контейнер.
  • Postgres Контейнер запускается, а сапоги с данными в каталоге его данных.

Короче говоря, вместо того, чтобы потратить много времени многократно инициализацию ваших баз данных вручную или созданию и поддержания сценариев, с удивительно небольшими работами, которую вы пригодны. У вас есть полностью автоматизированная система на месте, которая будет работать каждый раз.

Преимущества

Этот подход имеет 3 основных преимущества:

  • Это огромное время для разработчиков — загрузка теперь Super Quick, и разработчики не должны вручную добавлять данные или создавать и поддерживать сценарии.
  • Он гарантирует, что все в вашей команде работают с идентичным набором данных. Чтобы получить новейшую версию данных, все, что вам нужно сделать, это Докер тянуть Изображение данных, как и любой другой контейнер. На самом деле, Docker-Compose сделаю это для них, поэтому они даже не должны думать об этом, когда бортовые.
  • Это легко автоматизировать. Есть много существующих инструментов для автоматизации Docker Builds, которые вы можете воспользоваться этим подходом.

Нисходящие

Основной недостаткой такого подхода состоит в том, что его может быть трудно поддерживать контейнер данных. Поддержание его вручную имеет одинаковые недостатки, что и инициализация базы данных вручную или со скриптами — Данные могут быть устойчивы к изменению схемы БД.

Команды, которые используют этот подход, имеют тенденцию генерировать свои контейнеры для данных с использованием CI. Снимки работы CI и демонстрируют данные из продукции или постановки, и толкает его в реестр Docker. Таким образом, генерация контейнера полностью автоматизирована, а разработчики не должны беспокоиться об этом.

Заключение

Контейнеры для данных — это прохладный пример того, как Docker Compose делает намного больше, чем просто загружать контейнеры. Используется правильно, может существенно увеличить производительность разработчика.

Мы рады поделиться этими советами по производительности разработчиков, потому что мы заметили, что рабочий процесс разработки стал запоздалом во время перехода к контейнерам. Сложность современных приложений требует новых рабочих процессов разработки. Мы построили Сразу Таким образом, что команды разработчиков могут быстро построить и протестировать контейнерное программное обеспечение, без необходимости изобретать подход к среде развития.

Ресурсы

Проверьте еще один трюк для повышения производительности разработчиков по Использование объемов хоста избавится от контейнера Rebuilds Отказ

Попробуйте пример С Blimp, чтобы увидеть, насколько легко развивается на Docker Compose можно масштабировать в облако.

Читать Common Docker Составьте ошибки Для более советов о том, как сделать развитие быстрее.

Оригинал: «https://dev.to/ethanjjackson/using-data-containers-to-boot-your-development-environment-in-seconds-4c9h»