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? Спрашивай в комментариях ниже!

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

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

Сохранить моё имя, имейл и адрес сайта в этом браузере для будущих комментариев