Подключение 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.