Перейти к содержимому

Как создать базу данных postgresql в docker

  • автор:

Не создается база данных Postgresql в Docker

Проблема в том, что, когда backend пытается присоединиться к Бд film_assistant получает ошибку, о том что такой бд нет.

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: database "film_assistant" does not exist 

Что выдает БД в docker

pg_db_1 | 2022-03-15 14:26:07.732 UTC [26] LOG: invalid record length at 0/15CA600: wanted 24, got 0 pg_db_1 | 2022-03-15 14:26:07.732 UTC [26] LOG: redo done at 0/15CA588 pg_db_1 | 2022-03-15 14:26:07.906 UTC [1] LOG: database system is ready to accept connections pg_db_1 | 2022-03-15 14:26:08.649 UTC [35] FATAL: database "film_assistant" does not exist 

что лежит в папке ./data

Посмотрев ошибку в интернете, понял, что у меня во 1 не создается volume(может связано с этим) Также ошибка сообщает что как раз volume создан неверно или container. Попробовав решения, которые были в аналогичных вопросах, понял что ничего не получилось. там советовали удалить container, image, volume и создать заново, несколько раз попробовал ничего не вышло. Но что самое странное еще вчера все работало, то есть и база была создана и подключался и я в ней спокойно работал. Но ошибочно удалил папку data, которая создается при запуске docker, я запустил скрипт еще раз, настроил pg_hba.conf также как и до этого, понял что теперь все не работает. И не знаю как даже это починить.

Установка PostgreSQL с помощью Docker

В этом руководстве мы научимся устанавливать PostgreSQL с помощью Docker. Обычно мы запускаем контейнер Docker, используя публичный образ Docker, или берём предварительно настроенные Docker-образы сервера баз данных PostgreSQL из Docker Hub. Здесь же мы продемонстрируем, как PostgreSQL можно установить, настроить и запустить на Docker.

Сначала запустим контейнер Docker с базой данных PostgreSQL, используя публичный образ PostgreSQL. Позже мы создадим пользовательский Dockerfile для установки сервера PostgreSQL в контейнер Docker. Также мы научимся создавать резервные копии и восстанавливать базу данных с помощью контейнера Docker.

Оглавление:

  1. Знакомство с базой данных PostgreSQL
  2. Установка PostgreSQL с помощью публичного образа
  3. Установка PostgreSQL с помощью пользовательского Dockerfile
  4. Установка pgAdmin на Docker
  5. Резервное копирование и восстановление данных

1. Знакомство с базой данных PostgreSQL

Прежде чем мы перейдём к запуску Docker-контейнера базы данных PostgreSQL, давайте сначала разберёмся, что она вообще из себя представляет.

PostgreSQL — это СУБД с открытым исходным кодом, аналогичная MySQL. Это объектно-ориентированная база данных, но с её помощью мы можем обрабатывать как структурированные, так и неструктурированные данные.

Механизм базы данных PostgreSQL работает на различных платформах, включая Windows, Mac OS X и Linux. Он также предоставляет расширенные типы данных и функции оптимизации производительности для хранения и масштабирования сложных рабочих нагрузок БД.

2. Установка PostgreSQL с помощью публичного образа

Чтобы запустить PostgreSQL с помощью Docker, нам сначала нужно извлечь публичный образ postgres, доступный на Docker Hub:

$ docker pull postgres Using default tag: latest latest: Pulling from library/postgres 1fe172e4850f: Pull complete . c08147da7b54: Pull complete Digest: sha256:ab0be6280ada8549f45e6662ab4f00b7f601886fcd55c5976565d4636d87c8b2 Status: Downloaded newer image for postgres:latest docker.io/library/postgres:latest 

В приведённой выше команде мы вытянули последний стабильный образ postgres. Мы также можем использовать определённую версию образа postgres с помощью следующей команды:

$ docker pull postgres:14.2 14.2: Pulling from library/postgres Digest: sha256:e3d8179786b8f16d066b313f381484a92efb175d1ce8355dc180fee1d5fa70ec Status: Downloaded newer image for postgres:14.2 docker.io/library/postgres:14.2 

Теперь запустим контейнер Docker, используя образ postgres:latest:

$ docker run -itd -e POSTGRES_USER=baeldung -e POSTGRES_PASSWORD=baeldung -p 5432:5432 -v /data:/var/lib/postgresql/data --name postgresql postgres 5aeda2b20a708296d22db4451d0ca57e8d23acbfe337be0dc9b526a33b302cf5 

Данная команда использует переменные среды POSTGRES_USER и POSTGRES_PASSWORD для установки имени пользователя и пароля для БД PostgreSQL. Также база данных PostgreSQL по умолчанию должна работать на порте 5432, и мы открыли его на хосте, используя переменную «-p 5432:5432» в команде docker run .

Для резервного копирования данных мы также смонтировали каталог /var/lib/postgresql/data в каталог /data на хост-машине контейнера postgres.

psql — это утилита командной строки, используемая для интерактивного доступа к БД PostgreSQL. Давайте воспользуемся psql для соединения с базой данных:

$ PGPASSWORD=baeldung psql -U baeldung 

Чтобы получить список всех баз данных, воспользуемся командой \l :

$ PGPASSWORD=baeldung psql -U baeldung -c '\l' List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ------------+------------+----------+------------+------------+--------------------------- baeldung | baeldung | UTF8 | en_US.utf8 | en_US.utf8 | postgres | baeldung | UTF8 | en_US.utf8 | en_US.utf8 | template0 | baeldung | UTF8 | en_US.utf8 | en_US.utf8 | =c/baeldung + | | | | | baeldung=CTc/baeldung template1 | baeldung | UTF8 | en_US.utf8 | en_US.utf8 | =c/baeldung + | | | | | baeldung=CTc/baeldung (4 rows) 

В показанном выше выводе мы можем увидеть подробную информацию обо всех базах данных, имеющихся на сервере PostgreSQL.

3. Установка PostgreSQL с помощью пользовательского Dockerfile

Мы также можем установить сервер базы данных PostgreSQL, создав собственный Dockerfile. Ниже мы создадим такой файл, который будет содержать все необходимые команды для установки Postgres, используя CentOS в качестве базового образа:

FROM centos:7 COPY startUpScript.sh / RUN yum install -y epel-release maven wget \ && yum clean all \ && yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm \ && yum install -y postgresql11-server postgresql11-contrib \ && chown root /startUpScript.sh \ && chgrp root /startUpScript.sh \ && chmod 777 /startUpScript.sh CMD ["/bin/bash","-c","/startUpScript.sh && tail -f /dev/null"] 

В приведённом выше Dockerfile мы использовали startUpScript.sh для запуска сервера базы данных PostgreSQL после успешной установки. Давайте также рассмотрим файл startUpScript.sh:

#!/bin/bash su -l postgres -c /usr/pgsql-11/bin/initdb su -l postgres -c "/usr/pgsql-11/bin/pg_ctl -D /var/lib/pgsql/11/data -l /tmp/pg_logfile start" createdb -U postgres baeldung 

В startUpScript.sh мы сначала инициализировали базу данных PostgreSQL, а затем создали фиктивную базу данных под условным именем baeldung.

4. Установка pgAdmin на Docker

Итак, сервер PostgreSQL активен и работает на порте 5432. Теперь мы установим pgAdmin — инструмент с веб-интерфейсом, используемый для управления базами данных и сервисами PostgreSQL. pgAdmin можно использовать для выполнения SQL-запросов к базам данных PostgreSQL .

Мы можем использовать pgAdmin для выполнения всех запросов из пользовательского интерфейса, и для этого нам нужно извлечь образ pgAdmin с помощью следующей команды:

$ docker pull dpage/pgadmin4:latest latest: Pulling from dpage/pgadmin4 40e059520d19: Pull complete . 6d23acfae6ef: Pull complete Digest: sha256:f820e5579857a7210599f998c818777a2f6f39172b50fbeb2faaa1a70413e9ac Status: Downloaded newer image for dpage/pgadmin4:latest docker.io/dpage/pgadmin4:latest 

Для наглядности запустим контейнер с помощью такой команды:

$ docker run --name pgadmin-baeldung -p 5051:80 -e "PGADMIN_DEFAULT_EMAIL=user@baeldung.com" -e "PGADMIN_DEFAULT_PASSWORD=baeldung" -d dpage/pgadmin4 

В команде выше мы предоставили PGADMIN_DEFAULT_EMAIL и PGADMIN_DEFAULT_PASSWORD в качестве переменной окружения для контейнера pgadmin-baeldung:

С помощью графического интерфейса pgAdmin мы можем легко получать доступ к нашим базам данных PostgreSQL. Просто установите соединение с сервером PostgreSQL с помощью pgAdmin и залогиньтесь.

5. Резервное копирование и восстановление данных

В этом разделе мы научимся создавать резервные копии и восстанавливать данные в PostgreSQL с помощью команд Docker.

Сначала, чтобы создать резервную копию данных, давайте создадим фиктивную базу данных baeldung и таблицу baeldungauthor:

$ createdb -h localhost -p 5432 -U baeldung baeldung 

Команда для создания таблицы выглядит следующим образом:

CREATE TABLE baeldungauthor ( AUTHOR_ID INT PRIMARY KEY NOT NULL, AUTHOR_NAME TEXT NOT NULL, AUTHOR_AGE INT NOT NULL, AUTHOR_LEVEL INT NOT NULL ); 

Укажем созданную таблицу в базе данных:

psql -U baeldung -d baeldung -c "\d" List of relations Schema | Name | Type | Owner --------+----------------+-------+------------ public | baedlungauthor | table | baeldung (1 row) 

Теперь воспользуемся следующей командой, чтобы получить подробную схему таблицы baeldungauthor:

psql -U baeldung -d baeldung -c "\d baedlungauthor" Table "public.baedlungauthor" Column | Type | Collation | Nullable | Default --------------+---------+-----------+----------+--------- author_id | integer | | not null | author_name | text | | not null | author_age | integer | | not null | author_level | integer | | not null | Indexes: "baedlungauthor_pkey" PRIMARY KEY, btree (author_id) 

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

$ docker exec -t postgresql pg_dumpall -c -U baeldung > dump.sql 

Здесь мы использовали команду pg_dumpall для резервного копирования базы данных baeldung (Это стандартный инструмент PostgreSQL для таких задач). Мы также указали имя пользователя сервера БД для доступа к привилегиям.

Теперь давайте проверим команду для восстановления базы данных:

$ cat dump.sql | docker exec -i postgresql psql -U baeldung 

Таким образом, мы восстановили все таблицы базы данных baeldung с помощью команды psql.

6. Заключение

В этой статье мы научились устанавливать базу данных PostgreSQL с помощью контейнера Docker и изучили каждый шаг по извлечению, настройке и запуску Docker-контейнера Postgres. Кроме того, мы разобрали оба способа доступа к серверу базы данных PostgreSQL. Сначала, для доступа к серверу запущенному в контейнере Docker — мы использовали pgAdmin, а затем, для выполнения запросов к БД — применили psql.

Подводя итог, мы запустили контейнер Docker с базой данных PostgreSQL, используя публичный образ Postgres, представленный на Docker Hub. Мы также создали собственный Dockerfile для установки сервера PostgreSQL в Docker-контейнер.

Наконец, мы рассмотрели резервное копирование и восстановление данных в базе данных PostgreSQL с помощью контейнера Docker.

Спасибо за внимание!

  • Блог компании FirstVDS
  • PostgreSQL

Полное руководство по установке и настройке PostgreSQL в Docker

Docker – это платформа, которая позволяет создавать, упаковывать и запускать приложения в контейнерах. Контейнеры обеспечивают изоляцию приложений и их зависимостей, что делает их легко переносимыми и масштабируемыми.

Docker упрощает разработку, развертывание и управление приложениями, а также способствует снижению конфликтов окружений.

Вдобавок к этому, он позволяет разработчикам сосредоточиться на создании качественного ПО и облегчает DevOps-практики для более быстрой и надёжной доставки приложений.

Что такое PostgreSQL

PostgreSQL (PostgreSQL Database Management System) – это объектно-реляционная система управления базами данных (СУБД) с открытым исходным кодом.

Основные характеристики PostgreSQL:

  • Расширяемость. PostgreSQL предоставляет множество функций и возможностей, а также поддерживает различные расширения, что позволяет разработчикам создавать свои пользовательские типы данных, функции и процедуры.
  • Объектно-реляционная модель. PostgreSQL сочетает в себе функциональность реляционных баз данных и объектно-ориентированных баз данных. Он не только поддерживает таблицы, представления, индексы, триггеры и хранимые процедуры, но и позволяет определять собственные пользовательские типы данных.
  • ACID-транзакции. Данная СУБД обеспечивает целостность данных благодаря поддержке ACID-транзакций.

ACID – это набор требований, которые обеспечивают сохранность ваших данных. В аббревиатуру входят: Atomicity (Атомарность), Consistency (Согласованность), Isolation (Изоляция) и Durability (Долговечность).

  • Многопоточность и параллелизм. PostgreSQL может эффективно работать с множеством параллельных запросов и потоков, обеспечивая высокую производительность на многопроцессорных системах.
  • JSON-поддержка. PostgreSQL имеет встроенную поддержку для хранения и работы с данными формата JSON.
  • Поддержка множества программных языков. PostgreSQL может использоваться с различными языками программирования. Например, с C/C++, Python , Java, Perl , Ruby и другими, что делает эту систему универсальной и удобной для разработки.
  • Географические и геометрические типы данных. PostgreSQL прекрасно подходит для запуска геопространственных приложений, так как даёт возможность хранить и работать с географическими и геометрическими данными.

Иными словами, PostgreSQL широко используется в различных областях, включая веб-приложения, геоинформационные системы, хранение и обработка больших объёмов данных и многое другое. Благодаря своим многочисленным особенностям, эта СУБД разработчиков и компаний по всему миру.

Зачем использовать PostgreSQL в контейнере

Использование PostgreSQL в контейнере предоставляет высокую степень изоляции и портабельности базы данных (БД). Контейнеры позволяют упаковать PostgreSQL и все его зависимости в одну изолированную среду, что значительно упрощает процесс развертывания и управления базой данных, а также обеспечивает предсказуемость работы приложений, использующих эту БД.

Однако это одни из многих причин использовать PostgreSQL в контейнере. Этот способ:

  • обеспечивает изолированную среду для базы данных, что предотвращает конфликты с другими компонентами системы и обеспечивает стабильность работы;
  • предоставляет возможность запускать PostgreSQL на различных хостах или облачных сервисах без изменения конфигурации;
  • упрощает управление версиями PostgreSQL и позволяет быстро менять образы для обновления или отката БД;
  • упрощает процесс развёртывания и обеспечивает предсказуемость при тестировании, разработке и масштабировании;
  • способствует применению DevOps-практик и автоматизации процессов разработки и обновления БД;
  • обеспечивает отказоустойчивость и даёт быстро восстановить PostgreSQL из резервной копии при сбоях.

Аренда сервера

Для работы с такой системой управления базами данных, как PostgreSQL, а тем более её разворачивания в Docker может потребоваться определённый объём ресурсов на сервере.

В таком случае поручите хранение своих данных проверенному партнёру! RU-CENTER предлагает аренду физического сервера, который обеспечит безопасность вашей информации. Мощное устройство в московском дата-центре гарантирует надёжность, а профессиональное обслуживание и поддержка 24/7 обеспечат бесперебойную работу ваших проектов.

Для тех же, кто ищет идеальное виртуальное решение, RU-CENTER предлагает VPS/VDS хостинг на Linux. Наша команда профессионалов готова обеспечить непрерывную поддержку и круглосуточное обслуживание, чтобы вы могли сосредоточиться на более важных задачах и развитии своего проекта.

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

Установка PostgreSQL в Docker осуществляется путём создания и запуска контейнера на основе официального Docker-образа PostgreSQL, который предоставляется командой Docker.

Вот простая инструкция по установке PostgreSQL в Docker из официального образа:

  1. Если у вас ещё нет Docker, убедитесь, что установили его на свой сервер. Вы можете скачать и установить платформу для своей операционной системы, следуя инструкциям на официальном сайте Docker или воспользовавшись нашим руководством.
  2. Откройте командную строку или терминал и выполните команду для поиска официального образа PostgreSQL в Docker Hub:

docker search postgres

Перед вами появится список доступных образов. Выберите тот, который соответствует вашим требованиям. Обычно, для базовой установки вы можете использовать официальный образ с именем «postgres».

  1. Загрузите выбранный образ PostgreSQL с помощью команды:

docker pull postgres

Готово! Теперь у вас установлен и работает PostgreSQL в контейнере Docker с именем «doc_postgres».

Запуск контейнера PostgreSQL в Docker

  1. После того, как образ будет загружен, вы сможете создать контейнер из него. Например, чтобы создать контейнер с именем «doc_postgres», используя образ PostgreSQL, выполните следующую команду:

docker run —name doc_postgres -e POSTGRES_PASSWORD=mypassword -d postgres

  • «—name dc_postgres» задаст имя контейнера (в данном случае «doc_postgres»);
  • «-e POSTGRES_PASSWORD=mypassword» задаст пароль для пользователя «postgres»;
  • аргумент «-d» означает, что контейнер будет запущен в фоновом режиме.
  1. Чтобы проверить, что контейнер успешно запущен, выполните команду:

В выводе вы увидите список всех запущенных контейнеров. Если запуск был произведён корректно, в списке появится контейнер с именем «doc_postgres» со статусом «Up».

Контейнер будет запущен в фоновом режиме, и СУБД PostgreSQL будет доступна для подключения.

Как подключиться к PostgreSQL в контейнере

  1. Если вы хотите подключиться к PostgreSQL внутри контейнера с помощью клиента, например, «psql», можете выполнить следующую команду:

docker exec -it doc_postgres psql -U postgres

После выполнения команды, вы будете подключены к базе данных PostgreSQL в контейнере. Там можно выполнять SQL-запросы и свободно работать с БД.

  1. Когда контейнер вам станет не нужен, остановите его простой командой:

docker stop doc_postgres

Вы также можете остановить и сразу удалить данный контейнер:

docker rm -f doc_postgres

Важно! При удалении контейнера данные внутри него также будут удалены. Если вы хотите сохранить их, настройте тома для хранения этих данных вне контейнера.

Теперь вы знаете, как подключиться к PostgreSQL в контейнере Docker и выполнять запросы к базе данных.

Если у вас возникли проблемы при подключении, убедитесь, что:

  • контейнер PostgreSQL запущен;
  • правильно указаны имя контейнера и имя пользователя для подключения.

Запуск PostgreSQL с помощью docker-compose

Запуск PostgreSQL с помощью Docker Compose – это наиболее удобный способ управления контейнерами. Docker Compose позволяет запускать несколько контейнеров одновременно, а также настраивать их взаимодействие и зависимости.

Чтобы выполнить запуск PostgreSQL с помощью Docker Compose, выполните несколько шагов, описанных ниже.

Шаг 1. Установка Docker Compose

Убедитесь, что вы установили Docker Compose на свой компьютер или сервер. Плагин Docker Compose поставляется вместе с Docker для Windows и Mac, но для Linux вы должны установить его отдельно.

В этом шаге мы рассмотрим загрузку Docker Compose из репозитория.

  1. Обновите пакеты и установите последнюю версию Docker Compose:

Ubuntu/Debian:

sudo apt-get update

sudo apt-get install docker-compose-plugin

CentOS:

sudo yum update

sudo yum install docker-compose-plugin

  1. Проверьте, корректно ли прошла установка, проверив версию:

docker compose version

Готово! Вы установили плагин Docker Compose в операционные системы Ubuntu, Debian и CentOS.

Также вы можете ознакомиться с процессом установки вручную в официальной документации Docker.

Шаг 2. Запуск PostgreSQL

  1. Создайте новый файл с именем «docker-compose.yml» и откройте его для редактирования. В этом файле вы определите параметры запуска PostgreSQL.

Содержание «docker-compose.yml» для запуска PostgreSQL должно быть примерно следующим:

  1. Откройте командную строку или терминал и перейдите в каталог, где находится ваш файл «docker-compose.yml». Затем выполните следующую команду:

docker-compose up -d

Команда «docker-compose up -d» загрузит образ PostgreSQL, создаст и запустит контейнер на основе определения из ранее созданного файла, а аргумент «-d» запустит контейнеры в фоновом режиме.

  1. Чтобы убедиться, что контейнер с PostgreSQL успешно запущен, выполните команду:
  1. Если вы захотите отключить данный контейнер, то можете остановить и удалить его командой:

Важно! Данные внутри контейнера останутся на вашем сервере, только если вы настроили том для PostgreSQL.

Заключение

В этой статье мы рассмотрели установку и настройку PostgreSQL с использованием Docker.

Контейнеризация делает процесс работы с базами данных более предсказуемым и эффективным, позволяя быстро масштабировать и управлять PostgreSQL в различных сценариях. Этот подход особенно полезен для разработчиков и DevOps-специалистов и обеспечивает удобную среду для работы с PostgreSQL.

Установка и настройка 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. Используем команду

Вы увидите перечень контейнеров. По умолчанию команда показывает только запущенные контейнеры. Чтобы увидеть все контейнеры, лучше использовать флаг -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 из интерфейса командной строки выполняется следующим образом:

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

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

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

  • 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 – устоявшийся архитектурный шаблон, который мы рекомендуем взять на вооружение для всех ваших приложений.

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

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