Установка и настройка PostgreSQL в Docker


Docker — один из самых известных инструментов для создания и запуска контейнеров. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который можно развёртывать на любой Linux-системе. Благодаря услуге облачного Kubernetes вы можете сосредоточиться на разработке, а поддержку работоспособности кластера Kubernetes возьмут на себя специалисты Cloud4Y.

Для установки PostgreSQL необходимо заранее установить актуальную версию Docker на устройство, на котором вы планируете заниматься разработкой. Обратите внимание, на Docker Hub можно найти официальные образы PostgreSQL всесте с базовыми инструкциями по использованию.

Важно! Данный способ установки PostgreSQL минимально достаточен для разработки. Обратитесь к документации PostgreSQL, чтобы повысить уровень безопасности системы.

Установка PostgreSQL

Официальный образ PostgreSQL позволяет настраивать большое количество параметров. Для первой установки достаточно оставить всё как есть, за исключением пароля суперпользователя. Его нужно задать командой в Linux, Windows или Mac из терминала или командной строки:

docker run --name psql-container -p 5432:5432 -e POSTGRES_PASSWORD=myPassword -d postgres

Эта команда запустит нам контейнер PostgreSQL в фоновом (detached) режиме и присвоит ему имя psql –container. В приведённой выше команде замените:

  • psql -container — на любое другое имя, которое вам требуется (по желанию)
  • myPassword — на другой пароль для аутентификации и подключения к Postgres (в приложении со строкой подключения, а также в программе просмотра PG-admin).

Мы выставили наружу порт, сделав БД доступной извне, чтобы к ней могли подключаться приложения и IDE. Теперь убедимся, что новый контейнер создан и работает на 0.0.0.0:5432. Используем команду

docker ps –a

Вы увидите перечень контейнеров. По умолчанию команда показывает только запущенные контейнеры. Чтобы увидеть все контейнеры, лучше использовать флаг -a (или --all).

Перечень контейнеров

PostgresQL готов к подключению и использованию. Сервер postgres теперь работает на IP-адресе вашего локального компьютера в 5432. С этого момента к базе данных можно подключиться, например, из IntelliJ IDEA. Ничего сложного, правда? Также можно через интерфейс Docker запустить CLI, подключиться к контейнеру и уже оттуда запустить psql:

psql --username=postgres --dbname=postgres

Установка PG-admin с помощью Docker

Загрузите версию браузера pgAdmin-4 из docker-hub, используя команду:

docker run --rm -p 5050:5050 thajeztah/pgadmin4

Теперь можно управлять postgres из браузера, запустив http://localhost:5050.

Для подключения сервера PSQL в pgAdmin введите учетные данные для сохранения и управления PSQL через графический интерфейс.

  • Хост. IP-адрес вашего компьютера.
  • Пароль. Пароль, используемый при создании сервера PSQL с помощью docker.

Подключение к серверу PSQL через CLI

Подключение к серверу psql из интерфейса командной строки выполняется следующим образом:

  1. Найдите docker-container-id, в котором работает postgres, используя следующую команду. docker ps -a
  2. Выполните приведенную ниже команду, чтобы войти в контейнер (с идентификатором из шага 1). docker exec -it <PSQL-Container-ID> bash
  3. Авторизуйтесь, чтобы начать использовать как пользователь postgres. psql -h localhost -p 5432 -U postgres -W
  4. Введите пароль, используемый при создании контейнера сервера PSQL.

Подключение к PostgreSQL из контейнера

Для этого необходимо выполнить команду:

docker exec -it mypg bash
  • exec — параметр для подключения к запущенному контейнеру;
  • mypg — имя контейнера (можно подставить Id);
  • bash — указываем, что нужно запустить интерпретатор при входе в контейнер.

Проверка состояния/работоспособности

Основная задача healthcheck – быстро уведомить управляющую контейнером среду о том, что с контейнером что-то не так. Самая простая стратегия решения проблемы – перезапуск контейнера.

Healthcheck для PostgreSQL обычно основывается на использовании утилиты pg_isready:

version: "3.9"services:
  postgres:
    image: postgres:13.3
    environment:
      POSTGRES_DB: "namedb"
      POSTGRES_USER: "nameuser"
      POSTGRES_PASSWORD: "myPassword"
      PGDATA: "/var/lib/postgresql/data/pgdata"
    volumes:
      - ../2. Init Database:/docker-entrypoint-initdb.d
      - .:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U nameuser -d namedb"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 4G

Healthcheck – устоявшийся архитектурный шаблон, который мы рекомендуем взять на вооружение для всех ваших приложений.

поделиться: 
(0)
автор: Андрей Огурчиков
опубликовано: 12.11.2021
Читайте нас: 
Вверх!