30.01.2024
11 минут чтения

Об использовании PostgreSQL с Docker

Docker postgres

В этой статье мы рассмотрим процесс установки, настройки и использования 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 – это образ PostgreSQL, который можно использовать для создания контейнера Docker с базой данных PostgreSQL.
Для запуска Postgres в Docker нужно сначала скачать образ Postgres из Docker Hub, а затем запустить контейнер с помощью команды docker run.
Да, для сохранения данных можно использовать тома Docker (Docker volumes), которые позволяют сохранять данные вне контейнера.
Параметры подключения, такие как имя пользователя, пароль и имя базы данных, можно настроить через переменные окружения при запуске контейнера Docker.
Да, можно настроить порт для контейнера Docker, чтобы обеспечить доступ к Postgres из внешних приложений.
Для обновления версии Postgres в Docker нужно скачать новый образ с Docker Hub и пересоздать контейнер с новым образом, при этом следует убедиться, что данные сохранены с помощью томов Docker.

Остались вопросы по PostgreSQL с Docker? Спрашивай в комментариях ниже!

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

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

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