Не устанавливайте Постгрес. Docker тянет Postgres


«черный кашалот» автор Сё Хатакеяма на Скрыть

С момента появления Docker я редко замечаю, что самостоятельно устанавливаю программное обеспечение для разработки на свой локальный компьютер. Будь то серверы баз данных (например, Postgres), системы кэширования (например, Redis, Memcache) или системы обмена сообщениями (например, Kafka) — я почти всегда пытаюсь найти или создать подходящий образ докера для использования во время разработки.

Установка программного обеспечения затруднена. И это не имеет ничего общего с вашим опытом как разработчика. Каждый раз, когда мы приступали к установке нового программного обеспечения, мы все сталкивались с конфликтами версий, эзотерическими сообщениями об ошибках сборки и отсутствующими ошибками зависимостей. Мы потратили бесчисленное количество часов на копирование фрагментов кода из Stack Overflow на наш терминал и запуск их в надежде, что один из них волшебным образом решит проблемы с установкой и запустит программное обеспечение. Результатом в основном являются отчаяние, разочарование и потеря производительности.

Docker предлагает выход из этого беспорядка, сводя задачу установки и запуска программного обеспечения всего к двум командам (докер запустить и докер тянуть). В этом посте мы увидим этот процесс в действии, шаг за шагом рассмотрим, как легко и просто настроить установку Postgres с помощью докера.

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

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


Получение образа Postgres Docker

Чтобы получить образ последней стабильной версии Postgres, просто запустите

docker pull postgres

Это приведет к получению последней стабильной версии образа Postgres из официального док-центра Postgres. хранилище. Чтобы получить версию, отличную от последней стабильной версии, мы можем указать соответствующее имя тега изображения для докер тянуть команда выше

docker pull postgres:[tag_you_want]

Создайте каталог, который будет служить локальной точкой подключения хоста для файлов данных Postgres

Если мы хотим сохранить данные, сгенерированные экземпляром Postgres, работающим внутри контейнера, за пределами жизненного цикла контейнера, нам нужно сопоставить локальную точку монтирования в виде тома данных с соответствующим путем внутри контейнера. Обычно я создаю тома папку (мы можем дать папке любое имя, которое нам нравится) в моем дом каталог, а затем создайте вложенные папки для каждого из приложений, для которых мне нужно создать точки подключения тома данных.

mkdir -p $HOME/docker/volumes/postgres

Запустите контейнер Postgres

Запустить контейнер Postgres так же просто, как запустить докер запустить команда

docker run --rm --name pg-docker -e POSTGRES_PASSWORD=docker -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgre

Мы предложили несколько вариантов докер запустить команда:

  • — гм: Автоматически удалять контейнер и связанную с ним файловую систему при выходе. В общем, если мы запускаем много краткосрочных контейнеров, рекомендуется передать г.м. флаг на докер запустить команда для автоматической очистки и предотвращения проблем с дисковым пространством. Мы всегда можем использовать в опция (описанная ниже) для сохранения данных за пределами жизненного цикла контейнера
  • — имя: Идентифицирующее имя контейнера. Мы можем выбрать любое имя, какое захотим. Обратите внимание, что два существующих (даже если они остановлены) контейнера не могут иметь одинаковое имя. Чтобы повторно использовать имя, вам нужно либо передать г.м. флаг на докер запустить команду или явно удалить контейнер с помощью команды докер рм [container name].
  • -е: Показать переменную окружения с именем POSTGRES_PASSWORD со значением докер к контейнеру. Эта переменная среды устанавливает пароль суперпользователя для PostgreSQL. Мы можем установить POSTGRES_PASSWORD ко всему, что нам нравится. Я просто выбираю, чтобы это было докер для демонстрации. Вы можете установить дополнительные переменные среды. К ним относятся POSTGRES_USER и POSTGRES_DB. POSTGRES_USER устанавливает имя суперпользователя. Если не указано, имя суперпользователя по умолчанию равно постгрес. POSTGRES_DB задает имя базы данных по умолчанию для установки. Если не указано, по умолчанию используется значение POSTGRES_USER.
  • -д: Запускает контейнер в автономном режиме или, другими словами, в фоновом режиме.
  • -п: привяжите порт 5432 на локальном хосте к порту 5432 внутри контейнера. Этот параметр позволяет приложениям, работающим за пределами контейнера, подключаться к серверу Postgres, работающему внутри контейнера.
  • -v: Смонтируйте $HOME/docker/volumes/postgres на хост-компьютере в путь к тому на стороне контейнера /var/lib/postgresql/data, созданный внутри контейнера. Это гарантирует, что данные postgres сохраняются даже после удаления контейнера.

Подключиться к Постгресу

После запуска контейнера подключение к нему из приложения ничем не отличается от подключения к экземпляру Postgres, работающему вне контейнера докера. Например, для подключения с помощью psql мы можем выполнить

psql -h localhost -U postgres -d postgres

Надеюсь, этот пост продемонстрировал, насколько легко и просто начать работу с Postgres в докере. Для большинства других приложений процесс так же прост. Так что в следующий раз, когда вам понадобится установить программу, подумайте докер тянуть прежде чем вы достигнете установка brew, установка yum, установка apt-get или любая другая команда для вашего системного менеджера пакетов 😃

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *