Этот гайд поможет вам установить PostgreSQL с использованием Docker.
Перед началом установите Docker Desktop для вашей ОС:
-
Windows:
Скачать Docker Desktop для Windows -
Ubuntu/Linux:
Инструкция по установке Docker EngineДля Ubuntu достаточно только Docker Engine. Если хочется Docker Desktop: инструкция по установке Docker Desktop Ubuntu
После установки запустите Docker Desktop и дождитесь статуса "Running" в системном трее. Проверьте работоспособность Docker Engine с помощью команды:
docker -v
Выполните в терминале команду, заменив параметры на требуемые:
docker run -d --name postgres-container -e POSTGRES_PASSWORD=123 -e POSTGRES_USER=admin -e POSTGRES_DB=first_db -e PGDATA=/var/lib/postgresql/data/pgdata -p 5432:5432 -v /home/<USERNAME>/pgdata:/var/lib/postgresql/data --restart unless-stopped postgres- Замените
<USERNAME>в пути-vна ваше имя пользователя в системе:- Linux/macOS:
echo $USERв терминале - Windows: Используйте путь вида
/c/Users/ваш_пользователь/pgdata
- Linux/macOS:
- По желанию измените:
POSTGRES_PASSWORD— пароль администратораPOSTGRES_USER— имя администратора БДPOSTGRES_DB— название базы данных
Запустить существующий контейнер
docker start postgres-containerОстановить контейнер
docker stop postgres-containerВсе активные контейнеры
docker psВсе контейнеры (включая остановленные)
docker ps -aУдалить контейнер (предварительно остановите его)
docker rm postgres-containerdocker exec -it postgres-container psql -U admin -d first_db-- Показать все базы данных
\l
-- Создать таблицу
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50));
-- Вставить данные
INSERT INTO users (name) VALUES ('John Doe');
-- Выбрать данные
SELECT * FROM users;-
После перезагрузки компьютера:
- Запустите Docker Desktop
- Выполните
docker start postgres-container
-
Ваши данные сохраняются благодаря параметру
-v(volume)
Физическое расположение данных:/home/<USERNAME>/pgdata -
Для подключения из приложений используйте:
- Host:
localhostилиhost.docker.internal - Port:
5432 - User/Password: те, что указали в
-eпараметрах
- Host:
Если вы вначале установили Postgres на WSL, а потом установили Postgres через Docker, не удалив предыдущую установку, возникнут проблемы при подключении к базе данных.
Одно из решений: используйте хост host.docker.internal
- В Windows (например, в Git Bash)
localhostуказывает на тот порт, куда проброшен контейнер (5432). - В WSL
localhostможет разрешаться как loopback-адрес самой подсистемы, а не Windows‑хоста. Таким образом, когда sequelize (или любой клиент) из WSL пытается подключиться кlocalhost:5432, он может попасть в другую службу (или даже в остаточные данные из прошлой установки), где для пользователя (например, admin) установлен другой пароль. - Вместо того чтобы указывать
localhostв настройках подключения в WSL, попробуйте задать адресhost.docker.internal. Этот специальный DNS‑alias позволяет из WSL корректно обратиться к сервисам, запущенным в Docker Desktop на Windows.