Переходим к полезной практике.
Сегодня мы запустим 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
Комментарии
Оставить комментарийВойдите, чтобы оставить комментарий.
Напишу себе: можно удалить PGDATA=/var/lib/postgresql/data/pgdata -v D:\psql:/var/lib/postgresql/data -d у команды запуска 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