September 15, 2023

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

Вернуться в Chulakov Dev