Подключение Strapi к базе данных Postgres
Прежде чем настроить подключение, необходимо запустить саму базу данных. В нашем примере Postgres мы развернем в docker-окружении. Пример docker-compose может быть следующим:
version: '3.7'
networks:
backend-network:
external:
name: "backend-network"
services:
postgres:
image: postgres:14.0
container_name: postgres
restart: always
environment:
POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
volumes:
- ./data:/var/lib/postgresql/data:rw
networks:
- backend-network
# Adminer container
adminer:
image: adminer:latest
container_name: adminer
restart: always
depends_on:
- postgres
ports:
- 9019:8080
networks:
- backend-network
volumes:
data:
driver: localВ примере для удобства просмотра через веб-интерфейс добавлен adminer. Для подключения к веб-интерфейсу необходимо в адресной строке браузера набрать http://<IP-адрес-сервера>:8080
В файле .env заполняем переменные: POSTGRES_USER — пользователь БД, POSTGRES_PASSWORD — пароль для подключения к БД.
Запускаем окружение с помощью команды:
docker-compose up -d
[centos@vm-01]$ docker-compose ps Name Command State Ports ------------------------------------------------------------------ adminer entrypoint.sh php -S [::]: ... Up 0.0.0.0:9019->8080/tcp postgres-14.0 docker-entrypoint.sh postgres Up 5432/tcp
Заходим в контейнер с помощью команды docker exec -it postgres-14.0 bash
Для подключения к созданной БД используем команду psql -Uusername, где username — это пользователь БД, заданный в переменной POSTGRES_USER в файле .env
При успешном подключении должна появиться командная строка, например:
81fbb2d54a29:/# psql -Uusername psql (14.8) Type "help" for help. postgreadmin=#
CREATE DATABASE strapidb WITH OWNER username;
Проверяем, что база данных успешно создана, набрав команду: \l
postgreadmin-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------+--------------+----------+------------+------------+-------------------------------
strapidb | username | UTF8 | en_US.utf8 | en_US.utf8 |Теперь в docker-окружении Strapi в файле .env указываем данные для подключения к нашей созданной БД, например:
DATABASE_CLIENT=postgres DATABASE_HOST=postgres-14.0 DATABASE_PORT=5432 DATABASE_NAME=strapidb DATABASE_USERNAME=username DATABASE_PASSWORD=12345678
DATABASE_CLIENT — указывает на то, что в качестве клиента Strapi будет использовать Postgres.
DATABASE_HOST — указывает наименование запущенного контейнера Postgres, в нашем примере это postgres-14.0.
DATABASE_PORT — порт, на котором работает БД.
DATABASE_NAME — имя базы данных, в нашем примере strapidb.
DATABASE_USERNAME — пользователь, указанный в переменной POSTGRES_USER,
DATABASE_PASSWORD — пароль, указанный в переменной POSTGRES_PASSWORD.