🔥 Чорна п’ятниця у FoxmindEd: знижки до 50% на ІТ курси онлайн! Поспішайте, пропозиція діє лише до 1.12!
Дізнатися більше
30.01.2024
11 хвилин читання

Про використання PostgreSQL з Docker

У цій статті ми розглянемо процес встановлення, налаштування та використання Docker PostgreSQL. А, крім того, деякі додаткові можливості та інструменти.

PostgreSQL – це популярна система управління базами даних (СУБД) з відкритим вихідним кодом, що підтримує широкий спектр функцій і можливостей (нагадаємо, освоїти на практиці SQL ви можете на курсі QA Automation від компанії FoxmindED). Docker – це платформа контейнеризації, яка дає змогу створювати, розгортати та керувати додатками в ізольованих середовищах.

Використання PostgreSQL з Docker має низку переваг. По-перше, це дає змогу легко і швидко розгортати СУБД у будь-якому оточенні. По-друге, контейнеризація забезпечує високий ступінь ізоляції та безпеки даних. По-третє, Docker дає змогу легко масштабувати PostgreSQL відповідно до потреб програми.

Встановлення 

Встановлення PostgreSQL у докері може бути виконано двома основними способами: використання загальнодоступного образу PostgreSQL або створення налаштованого Dockerfile.

  1. Використання загальнодоступного образу PostgreSQL
  • Переконайтеся, що у вас встановлено останню версію Docker.
  • Виконайте команду для завантаження образу PostgreSQL з Docker Hub:
  • Запустіть контейнер PostgreSQL на порту 5432:

За замовчуванням використовуються ім’я користувача postgres і пароль postgres.

  1. Використання налаштованого Dockerfile
  • Створіть файл Dockerfile у вашій робочій папці.
  • Додайте наступні рядки, налаштовуючи змінні середовища на ваш розсуд:
  • Збережіть файл Dockerfile.
  • Виконайте команду для складання Docker-образу із заданими параметрами:
  • Запустіть контейнер PostgreSQL зі створеного образу із зазначенням порту 5432:

За замовчуванням використовуються ім’я користувача і пароль, задані у змінних середовища POSTGRES_USER і POSTGRES_PASSWORD.

Розглянемо деякі приклади команд, які ви можете використовувати для встановлення та запуску контейнера PostgreSQL:

  • Встановлення загальнодоступного образу: docker pull postgres
  • Запуск контейнера на порту 5432: docker run -d -p 5432:5432 postgres
  • Встановлення налаштованого образу: docker build -t my_postgres .
  • Запуск контейнера з налаштованого образу: docker run -d -p 5432:5432 my_postgres
Курси рівня Junior від Foxminded призначені для розробників-початківців з базовими навичками. Тут лише 100% практики під керівництвом досвідчених менторів.
Переконайся, що курси тобі підходять за час 7-денного тестового періоду.
Обрати курс

Налаштування та конфігурація

Налаштування PostgreSQL у докер передбачає зміну параметрів конфігурації та встановлення змінних середовища для адаптації роботи бази даних під конкретні вимоги проєкту або оточення. Ось короткий посібник із цього процесу:

  • Підключіться до контейнера PostgreSQL за допомогою команди docker exec.

Замініть my-postgres-container на ім’я вашого контейнера, якщо воно відрізняється.

  • Перейдіть до каталогу з конфігурацією, який зазвичай знаходиться в /etc/postgresql/{версія}/main/.
  • Відредагуйте файл postgresql.conf, використовуючи текстовий редактор, наприклад, nano. Приклади параметрів, які можна змінити, включають listen_addresses, max_connections і shared_buffers.
  • Збережіть зміни та перезапустіть PostgreSQL:

Як відбувається встановлення змінних середовища під час запуску контейнера?

  • За необхідності, зупиніть і видаліть поточний контейнер:
  • Запустіть контейнер із зазначенням змінних середовища для швидкого налаштування:

У цьому прикладі вказуються ім’я користувача, пароль та ім’я бази даних через змінні середовища під час запуску контейнера.

Робота з базою даних 

Тепер ви можете почати працювати з базами даних у Docker. Для цього виконайте такі кроки:

  • Запустіть клієнт PostgreSQL у контейнері:
  • Створіть базу даних за допомогою команди:

Щоб підключитися до бази даних і виконати подальші операції – використовуйте команду:

Які ще є команди для роботи з базою даних?

  • Створення бази даних: CREATE DATABASE my_database;
  • Видалення бази даних: DROP DATABASE my_database;
  • Створення таблиці:
  • Вставка даних у таблицю: INSERT INTO my_table (name) VALUES (‘John Doe’);
  • Оновлення даних у таблиці: UPDATE my_table SET name = ‘Jane Doe’ WHERE id = 1;
  • Видалення даних з таблиці: DELETE FROM my_table WHERE id = 1;
  • Вибір даних із таблиці: SELECT * FROM my_table;

Резервне копіювання та відновлення

Резервне копіювання баз даних — забезпечує можливість відновлення даних у разі збоїв або втрати. У Docker, процеси резервного копіювання та відновлення для PostgreSQL виконуються в контексті контейнера, що вимагає деяких додаткових кроків.

  • Методи резервного копіювання

Використання pg_dump. Це стандартний інструмент для створення логічних резервних копій PostgreSQL. Для виконання резервного копіювання бази даних у Docker контейнері використовуйте таку команду:

Де mydatabase – ім’я бази даних, яку ви хочете скопіювати, а backup.sql – файл, у який буде збережено резервну копію.

  • Інструкції зі створення резервних копій

Для регулярного створення резервних копій можна використовувати утиліту Cron всередині контейнера. Створіть файл backup.sh:

І додайте завдання в Cron:

У цьому прикладі резервна копія створюватиметься щодня о 2 годині ночі. Переконайтеся, що папка /backup існує в контейнері.

  • Для відновлення даних із резервної копії використовуйте таку команду:

Де backup.sql – файл із резервною копією, а mydatabase – ім’я бази даних, у яку ви хочете відновити дані.

Отже, забезпечення резервного копіювання та відновлення в середовищі Docker з PostgreSQL важливе для збереження даних і забезпечення безперебійної роботи додатків. Використовуйте утиліти, такі як pg_dump, для створення резервних копій, і розробіть стратегію регулярного виконання цих операцій. Це допоможе підтримувати цілісність даних і швидко відновлюватися в разі потреби.

 Backup

Додаткові можливості та інструменти

В екосистемі PostgreSQL в Docker доступні різні інструменти та розширення для додаткових можливостей з оптимізації роботи з базою даних. Деякі з них включають:

  • pgAdmin: графічний інструмент управління базою даних PostgreSQL, зі зручним інтерфейсом для адміністрування та моніторингу.
  • PostGIS: просторове та географічне розширення, що дає змогу зберігати й обробляти геодані.
  • pgBouncer: утиліта для пулу з’єднань, що сприяє ефективному використанню ресурсів і поліпшенню продуктивності під час роботи з великою кількістю з’єднань.
  • TimescaleDB: розширення для роботи з тимчасовими рядами даних, оптимізоване для опрацювання тимчасових даних.
  • pgRouting: розширення для виконання аналізу мережі та маршрутизації в просторових даних.

Наведемо приклади використання додаткових функцій для оптимізації роботи з базою даних:

  • Створення індексу для прискорення запитів:
  • Створення матеріалізованого подання для поліпшення продуктивності складних запитів:
  • Зміна параметрів конфігурації для оптимізації пам’яті та продуктивності:

Найкращі практики та поради

Розглянемо деякі найкращі практики та поради щодо оптимізації роботи…

  • Встановіть адекватні ресурси для контейнера СУБД, такі, як пам’ять і кількість CPU, для забезпечення ефективної роботи бази даних.
  • Налаштовуйте параметри конфігурації СУБД відповідно до вимог вашого проєкту, враховуючи особливості навантаження та обсягу даних.
  • Регулярно створюйте резервні копії баз даних і перевіряйте процедури відновлення, щоб забезпечити готовність до можливих збоїв.
  • Використовуйте паролі високої складності, обмежуйте доступи і стежте за безпекою контейнера, включно з оновленнями та моніторингом.
  • Вмикайте механізми моніторингу та логування, щоб швидко виявляти та вирішувати проблеми продуктивності та безпеки.
  • Розумно застосовуйте індекси для прискорення запитів, але уникайте надмірного їх використання, щоб не погіршувати продуктивність.
  • Регулярно проводьте тестування продуктивності, щоб виявляти вузькі місця і вносити відповідні оптимізації.
  • Поділяйте бази даних згідно з їхньою функціональністю, що допомагає керувати ресурсами та забезпечує вищу безпеку.
Підпишіться на наш Ютуб-канал! Корисні відео для програмістів чекають на вас! YouTube
Оберіть свій курс програмування! Шлях до кар’єри програміста починається тут! Подивитись

Які ж поширені проблеми можуть виникнути під час використання PostgreSQL у Docker?

  • Проблема: запуск контейнера PostgreSQL не вдається.

Рішення: перевірте доступність використовуваного порту, можливо, його зайняв інший процес. У разі помилки з портом, змініть його в команді запуску контейнера.

  • Проблема: помилка підключення до СУБД.

Рішення: перевірте правильність параметрів підключення (ім’я користувача, пароль, ім’я бази даних) і переконайтеся, що контейнер запущено і порт налаштовано правильно.

  • Проблема: брак ресурсів для контейнера.

Рішення: збільште виділені ресурси (пам’ять, CPU) під час запуску контейнера.

  • Проблема: помилка під час створення резервної копії.

Рішення: переконайтеся, що шлях для збереження резервної копії доступний з контейнера, використовуйте абсолютний шлях.

Висновок

Використання PostgreSQL з Docker надає гнучке та ефективне рішення для управління базами даних. Для глибшого розуміння та оптимального використання СУБД і Docker рекомендується вивчити документацію, а також ознайомитися з додатковими інструментами та сценаріями використання контейнерів Docker. Це допоможе вам максимально ефективно використовувати цю потужну комбінацію у своїх проектах.

FAQ
Що таке Docker Postgres?

Docker Postgres - це образ PostgreSQL, який можна використовувати для створення контейнера Docker з базою даних PostgreSQL.

Як запустити Postgres у Docker?

Для запуску Postgres у Docker потрібно спочатку завантажити образ Postgres з Docker Hub, а потім запустити контейнер за допомогою команди docker run.

Чи можна зберігати дані Postgres під час перезапуску контейнера Docker?

Так, для збереження даних можна використовувати томи Docker (Docker volumes), які дають змогу зберігати дані поза контейнером.

Як налаштувати параметри підключення до Postgres у Docker?

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

Чи можна під'єднатися до Postgres у Docker із зовнішнього додатка?

Так, можна налаштувати порт для контейнера Docker, щоб забезпечити доступ до Postgres із зовнішніх додатків.

Як оновити версію Postgres у Docker?

Для оновлення версії Postgres у Docker потрібно завантажити новий образ із Docker Hub і перестворити контейнер із новим образом, водночас слід переконатися, що дані збережено за допомогою томів Docker.

Залишилися запитання щодо PostgreSQL з Docker? Запитуй у коментарях нижче!

Додати коментар

Ваш імейл не буде опубліковано. Обов'язкові поля відзначені *

Зберегти моє ім'я, імейл та адресу сайту у цьому браузері для майбутніх коментарів