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.
до 40% от каждого клиентаСтать партнёром
Подключение к серверу PSQL через CLI
Подключение к серверу psql из интерфейса командной строки выполняется следующим образом:
-
Найдите docker-container-id, в котором работает postgres, используя следующую команду.
docker ps -a
-
Выполните приведенную ниже команду, чтобы войти в контейнер (с идентификатором из шага 1).
docker exec -it
bash -
Авторизуйтесь, чтобы начать использовать как пользователь postgres.
psql -h localhost -p 5432 -U postgres -W
- Введите пароль, используемый при создании контейнера сервера 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 – устоявшийся архитектурный шаблон, который мы рекомендуем взять на вооружение для всех ваших приложений.