Docker 3. Контейнер с PostgreSQL
В этом посте, запустим контейнер с PostgreSQL, поговорим о параметрах запуска и сохранении данных.
Дополнительные материалы
Для скачивания материалов необходимо войти или зарегистрироваться
Файлы также можно получить в Telegram-боте по коду: 921886
Реклама
Переходим к полезной практике.
Сегодня мы запустим 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
Все статьи