Cat

Docker 3. Контейнер с PostgreSQL

В этом посте, запустим контейнер с PostgreSQL, поговорим о параметрах запуска и сохранении данных.

Все статьи

Icon Link

Дополнительные материалы

Icon Link

Реклама

Icon Link
Применение Docker proDream 29 Июль 2023 Просмотров: 921

Переходим к полезной практике.

Сегодня мы запустим Docker-контейнер с PostgreSQL.
Для этого нам нужна всего одна команда, но перед этим, мы создадим папку, в которой будут храниться файлы базы данных. 
Поскольку, данные в контейнере сбрасываются до начального состояния образа, при перезапуске контейнера, нам нужна локальная папка для хранения файлов базы. Создать папку можно в любом месте, главное, что бы в пути не было кириллических символов. У меня это D:\psql.

 

Команда запуска:

docker run --name postgres-db -p 5432:5432 -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -e POSTGRES_DB=testdb -e PGDATA=/var/lib/postgresql/data/pgdata -v D:\psql:/var/lib/postgresql/data -d postgres:15.2

 

Разберём по порядку:

  • docker run - команда Docker для запуска контейнера.
  • --name - параметр определяющий имя контейнера для более удобного взаимодействия с ним, в нашем случае это postgres-db.
  • -p - параметр publish, определяет какой внутренний порт будет транслироваться из контейнера. Синтаксис <порт_вне_контейнера>:<порт_в_контейнере>. В нашем случае это стандартный порт PostgreSQL - 5432.
    Внимание! Если у вас установлен PostgreSQL в системе вне Docker, значит порт 5432 занят. Изменяем <порт_вне_контейнера> на другой, например, 5433.
  • -e - параметр передающий в контейнер переменные окружения. В нашем случае это:
    • POSTGRES_USER - определяет имя пользователя БД.
    • POSTGRES_PASSWORD - определяет пароль БД.
    • POSTGRES_DB - определяет название БД.
    • PGDATA - определяет место, где БД будет хранить данные.
  • -v - параметр volume, необходим для подключения внешней(вне контейнера) директории, по внутреннему(в контейнере) пути. В моём случае это - D:\psql:/var/lib/postgresql/data, где D:\psql директория на моём компьютере, а /var/lib/postgresql/data место хранения данных в контейнере.
  • -d - параметр сообщающий докеру, что мы хотим запустить контейнер в режиме демона, т.е. в фоновом режиме.
  • В самом конце команды определяем используемый базовый образ и его версию. Без указания версии, будет использоваться последняя доступная версия. В нашем случае, мы будем использовать официальный Docker-образ postgres версии 15.2

 

Создание контейнера и запуск.

Давайте выполним эту большую команду в терминале. Для запуска на Windows, убедитесь, что у вас запущен Docker Desktop

 

Начнётся скачивание базового образа из Docker Hub. После скачивания и запуска, терминал вернётся в режим пользовательского ввода. 
Если не было никаких ошибок, значит контейнер запущен успешно. 

 

Убедиться в этом можно выполнив команду:

docker ps -a

 

Мы должны увидеть два контейнера. Hello-world, который мы запускали в прошлом посте и наш свежесозданный postgres-db
В колонке STATUS в строке с БД, должно быть написано Up X minutes. Контейнер запущен и функционирует корректно.

 

Остановка и запуск контейнеров.

Для остановки контейнера, нужно выполнить команду:

docker stop postgres-db

 

А для запуска остановленного контейнера:

docker start postgres-db

 

Автор

    Нет комментариев

    Реклама