В этом блоге вы узнаете, как подключить основной сервис SuperTokens к базе данных MySQL или PostgreSQL с помощью Docker и без него.
Это применимо только в том случае, если вы самостоятельно размещаете основной сервис SuperTokens.
Существует несколько способов, как вы можете захотеть запустить SuperTokens вместе с базой данных. В этом блоге мы рассмотрим:
- 1) Запуск с MySQL:
- a) Запуск SuperTokens и MySQL без docker
- b) Запуск SuperTokens с Docker и MySQL без docker
- c) Запуск SuperTokens без Docker и MySQL с docker
- d) Запуск SuperTokens и MySQL с docker, но без docker-compose
- e) Запуск SuperTokens и MySQL с docker, с docker-compose
- 2) Запуск с PostgreSQL:
- a) Запуск SuperTokens и PostgreSQL без docker
- b) Запуск SuperTokens с Docker и PostgreSQL без docker
- c) Запуск SuperTokens без Docker и PostgreSQL с docker
- d) Запуск SuperTokens и PostgreSQL с docker, но без docker-compose
- e) Запуск SuperTokens и PostgreSQL с docker, с docker-compose
Пожалуйста, не стесняйтесь переходить к нужному разделу в зависимости от вашей установки. В каждом разделе мы будем ссылаться на документацию SuperTokens, где это необходимо, чтобы этот блог не был очень длинным.
Все приведенные ниже разделы предполагают, что вы используете операционную систему на базе Linux. Для Windows синтаксис некоторых шагов может отличаться, но общие шаги, которые необходимо выполнить, будут одинаковыми.
- 1a) Запуск SuperTokens и MySQL без docker
- 1b) Запуск SuperTokens с Docker и MySQL без docker
- 1c) Запуск SuperTokens без Docker и MySQL с docker
- 1d) Запуск SuperTokens и MySQL с помощью docker, но без docker-compose
- 1e) Запуск SuperTokens и MySQL с помощью docker, с docker-compose
- 2a) Запуск SuperTokens и PostgreSQL без docker
- 2b) Запуск SuperTokens с Docker и PostgreSQL без docker
- 2c) Запуск SuperTokens без Docker и PostgreSQL с docker
- 2d) Запуск SuperTokens и PostgreSQL с помощью docker, но без docker-compose
1a) Запуск SuperTokens и MySQL без docker
- Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.
- Подключитесь к серверу MySQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
create database supertokens;
Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.
- Создайте пользователя MySQL, который будет иметь полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
CREATE USER 'supertokens_user'@'localhost' IDENTIFIED BY 'somePassword';
GRANT ALL ON supertokens.* TO 'supertokens_user'@'localhost';
FLUSH PRIVILEGES;
Обратите внимание, что мы разрешаем этому пользователю работать только через 'localhost'
. Это будет работать только в том случае, если ядро SuperTokens также запущено локально. Если вы запускаете ядро в другом месте, то вам нужно заменить 'localhost'
в приведенном выше тексте на '%'
.
- Отредактируйте файл SuperTokens
config.yaml
(расположенный в/usr/lib/supertokens/config.yaml
), чтобы добавить следующий конфиг:
mysql_connection_uri: "mysql://supertokens_user:somePassword@localhost:3306/supertokens"
Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра MySQL в вышеуказанной строке uri соединения.
- Запустите SuperTokens, выполнив команду
supertokens start
в терминале:
supertokens start
Loading storage layer.
Loading MySQL config.
...
Started SuperTokens on localhost:3567 with PID: ...
- Убедитесь, что все настроено правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, значит, настройка ядра завершена!
1b) Запуск SuperTokens с Docker и MySQL без docker
Чтобы эта установка работала, мы должны подключить SuperTokens и MySQL через сеть хост-машины. Для этого нам нужно будет открыть MySQL db для локального IP.
- Начните с извлечения докер-образа SuperTokens, совместимого с MySQL:
docker pull registry.supertokens.io/supertokens/supertokens-mysql
- Раскройте сервер MySQL для всех сетевых интерфейсов на вашей машине. Для этого отредактируйте файл
my.cnf
(файл конфигурации MySQL), включив в него:
bind-address = 0.0.0.0
Обязательно перезагрузите сервер MySQL после сохранения файла.
- Подключитесь к серверу MySQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
create database supertokens;
Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.
- Создайте пользователя MySQL, который будет иметь полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
CREATE USER 'supertokens_user'@'%' IDENTIFIED BY 'somePassword';
GRANT ALL ON supertokens.* TO 'supertokens_user'@'%';
FLUSH PRIVILEGES;
- Запустите докер-образ SuperTokens с переменной env, указывающей URI соединения с MySQL:
docker run
-p 3567:3567
--network=host
-e MYSQL_CONNECTION_URI="mysql://supertokens_user:somePassword@192.168.1.1:3306/supertokens"
-d registry.supertokens.io/supertokens/supertokens-mysql
Обязательно замените
192.168.1.1
на правильный IP вашей системы.
Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:
docker ps
Если вы хотите запускать его на переднем плане, вы можете удалить опцию -d
из команды docker run
.
- Убедитесь, что он настроен правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, то настройка ядра завершена!
1c) Запуск SuperTokens без Docker и MySQL с docker
-
Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.
-
Запустите docker-контейнер MySQL:
docker run
-e MYSQL_ROOT_PASSWORD=root
-e MYSQL_USER=supertokens_user
-e MYSQL_PASSWORD=somePassword
-e MYSQL_DATABASE=supertokens
--network=host
-p 3306:3306
-d mysql
Вышеописанное запустит mysql db с новой базой данных под названием supertokens
. Ядро SuperTokens будет хранить данные в этой базе. Если вместо этого вы хотите, чтобы данные хранились в существующей базе данных, укажите имя этой базы.
- Отредактируйте файл SuperTokens
config.yaml
(расположенный в/usr/lib/supertokens/config.yaml
), чтобы добавить следующий конфиг:
mysql_connection_uri: "mysql://supertokens_user:somePassword@localhost:3306/supertokens"
Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра MySQL в вышеуказанной строке uri соединения.
- Запустите SuperTokens, выполнив команду
supertokens start
в терминале:
supertokens start
Loading storage layer.
Loading MySQL config.
...
Started SuperTokens on localhost:3567 with PID: ...
- Убедитесь, что все настроено правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, то настройка ядра завершена!
1d) Запуск SuperTokens и MySQL с помощью docker, но без docker-compose
- Начните с извлечения докер-образа SuperTokens, совместимого с MySQL:
docker pull registry.supertokens.io/supertokens/supertokens-mysql
- Запустите докер-контейнер MySQL:
docker run
-e MYSQL_ROOT_PASSWORD=root
-e MYSQL_USER=supertokens_user
-e MYSQL_PASSWORD=somePassword
-e MYSQL_DATABASE=supertokens
--network=host
-p 3306:3306
-d mysql
Вышеуказанные действия запустят mysql db с новой базой данных под названием supertokens
. Ядро SuperTokens будет хранить данные в этой базе. Если вместо этого вы хотите, чтобы данные хранились в существующей базе данных, укажите имя этой базы.
- Запустите докер-образ SuperTokens с переменной env, указывающей URI соединения с MySQL:
docker run
-p 3567:3567
--network=host
-e MYSQL_CONNECTION_URI="mysql://supertokens_user:somePassword@192.168.1.1:3306/supertokens"
-d registry.supertokens.io/supertokens/supertokens-mysql
Обязательно замените
192.168.1.1
на правильный IP вашей системы.
Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:
docker ps
Если вы хотите запустить его в фоновом режиме, вы можете удалить опцию -d
из команды docker run
.
- Убедитесь, что он настроен правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, то настройка ядра завершена!
1e) Запуск SuperTokens и MySQL с помощью docker, с docker-compose
- Используйте следующий файл docker compose. Вы можете назвать его
docker-compose.yaml
.
version: '3'
services:
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: supertokens_user
MYSQL_PASSWORD: somePassword
MYSQL_DATABASE: supertokens
ports:
- 3306:3306
networks:
- app_network
restart: unless-stopped
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
timeout: 20s
retries: 10
supertokens:
image: registry.supertokens.io/supertokens/supertokens-mysql
depends_on:
- db
ports:
- 3567:3567
environment:
MYSQL_CONNECTION_URI: mysql://supertokens_user:somePassword@db:3306/supertokens
networks:
- app_network
restart: unless-stopped
healthcheck:
test: >
bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1rnhost: 127.0.0.1:3567rnConnection: closernrn" >&3 && cat <&3 | grep "Hello"'
interval: 10s
timeout: 5s
retries: 5
networks:
app_network:
driver: bridge
- Вы можете выполнить следующую команду для запуска службы:
docker-compose up
- Убедитесь, что все настроено правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, значит, настройка ядра завершена!
2a) Запуск SuperTokens и PostgreSQL без docker
- Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.
- Подключитесь к серверу PostgreSQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
CREATE DATABASE supertokens;
Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.
- Создайте пользователя PostgreSQL, имеющего полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
CREATE USER supertokens_user WITH ENCRYPTED PASSWORD 'somePassword';
GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
- Отредактируйте файл SuperTokens
config.yaml
(расположенный в/usr/lib/supertokens/config.yaml
), чтобы добавить следующий конфиг:
postgresql_connection_uri: "postgresql://supertokens_user:somePassword@localhost:5432/supertokens"
Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра postgreSQL в вышеуказанной строке uri соединения.
- Запустите SuperTokens, выполнив команду supertokens start в терминале:
supertokens start
Loading storage layer.
Loading PostgreSQL config.
...
Started SuperTokens on localhost:3567 with PID: ...
- Убедитесь, что все настроено правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, то настройка ядра завершена!
2b) Запуск SuperTokens с Docker и PostgreSQL без docker
Чтобы эта установка работала, мы должны соединить SuperTokens и PostgreSQL через сеть хост-машины. Для этого нам нужно разрешить PostgreSQL разрешить входящие клиентские соединения по сети.
- Начните с извлечения докер-образа SuperTokens, совместимого с PostgreSQL:
docker pull registry.supertokens.io/supertokens/supertokens-postgresql
- Разрешите входящие клиентские подключения к базе данных PostgreSQL по сети, добавив следующие строки в файл
postgresql.conf
иpg_hba.conf
.
postgresql.conf
listen_addresses = '0.0.0.0'
pg_hba.conf
host all all 0.0.0.0/0 md5
- Подключитесь к серверу PostgreSQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
CREATE DATABASE supertokens;
Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.
- Создайте пользователя PostgreSQL, который будет иметь полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
CREATE USER supertokens_user with encrypted password 'somePassword';
GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
- Запустите докер-образ SuperTokens с переменной env, указывающей URI подключения к PostgreSQL:
docker run
-p 3567:3567
--network=host
-e POSTGRESQL_CONNECTION_URI="postgresql://supertokens_user:somePassword@192.168.1.1:5432/supertokens"
-d registry.supertokens.io/supertokens/supertokens-postgresql
Обязательно замените
192.168.1.1
на правильный IP вашей системы.
Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:
docker ps
Если вы хотите запустить его в фоновом режиме, вы можете удалить опцию -d
из команды docker run
.
- Убедитесь, что он настроен правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, то настройка ядра завершена!
2c) Запуск SuperTokens без Docker и PostgreSQL с docker
-
Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.
-
Запустите docker-контейнер PostgreSQL:
docker run
-e POSTGRES_USER=root
-e POSTGRES_PASSWORD=root
--network=host
-p 5432:5432
-d postgres
-c listen_addresses=0.0.0.0
Вышеуказанные действия запустят базу данных PostgreSQL. Вам нужно будет подключиться к базе данных и создать пользователя с привилегиями.
```sql
CREATE DATABASE supertokens;
```
Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.
- Создайте пользователя PostgreSQL, имеющего полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
CREATE USER supertokens_user with encrypted password 'somePassword';
GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
- Отредактируйте файл SuperTokens
config.yaml
(расположенный в/usr/lib/supertokens/config.yaml
), чтобы добавить следующий конфиг:
postgresql_connection_uri: "postgresql://supertokens_user:somePassword@localhost:5432/supertokens"
Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра PostgreSQL в вышеуказанной строке uri соединения.
- Запустите SuperTokens, выполнив команду
supertokens start
в терминале:
supertokens start
Loading storage layer.
Loading PostgreSQL config.
...
Started SuperTokens on localhost:3567 with PID: ...
- Убедитесь, что все настроено правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, значит, настройка ядра завершена!
2d) Запуск SuperTokens и PostgreSQL с помощью docker, но без docker-compose
- Начните с извлечения docker-образа SuperTokens, совместимого с PostgreSQL:
docker pull registry.supertokens.io/supertokens/supertokens-postgresql
- Запустите докер-контейнер PostgreSQL:
docker run
-e POSTGRES_USER=root
-e POSTGRES_PASSWORD=root
--network=host
-p 5432:5432
-d postgres
-c listen_addresses=0.0.0.0
Вышеописанное запустит базу данных PostgreSQL. Вам нужно будет подключиться к базе данных и создать пользователя с привилегиями.
```sql
CREATE DATABASE supertokens;
```
Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.
- Создайте пользователя PostgreSQL, имеющего полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
CREATE USER supertokens_user with encrypted password 'somePassword';
GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
- Запустите докер-образ SuperTokens с переменной env, указывающей URI подключения к PostgreSQL:
docker run
-p 3567:3567
--network=host
-e POSTGRESQL_CONNECTION_URI="postgresql://supertokens_user:somePassword@192.168.1.1:5432/supertokens"
-d registry.supertokens.io/supertokens/supertokens-postgresql
Обязательно замените
192.168.1.1
на правильный IP вашей системы.
Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:
docker ps
Если вы хотите запускать его на переднем плане, вы можете удалить опцию -d
из команды docker run
.
- Убедитесь, что он настроен правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, то настройка ядра завершена!
## 2e) Запуск SuperTokens и PostgreSQL с помощью docker, с docker-compose
- Используйте следующий файл docker compose. Вы можете назвать его
docker-compose.yaml
.
version: '3'
services:
db:
image: 'postgres:latest'
environment:
POSTGRES_USER: supertokens_user
POSTGRES_PASSWORD: somePassword
POSTGRES_DB: supertokens
ports:
- 5432:5432
networks:
- app_network
restart: unless-stopped
healthcheck:
test: ['CMD', 'pg_isready -U supertokens_user']
interval: 5s
timeout: 5s
retries: 5
supertokens:
image: registry.supertokens.io/supertokens/supertokens-postgresql
depends_on:
- db
ports:
- 3567:3567
environment:
POSTGRESQL_CONNECTION_URI: "postgresql://supertokens_user:somePassword@db:5432/supertokens"
networks:
- app_network
restart: unless-stopped
healthcheck:
test: >
bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1rnhost: 127.0.0.1:3567rnConnection: closernrn" >&3 && cat <&3 | grep "Hello"'
interval: 10s
timeout: 5s
retries: 5
networks:
app_network:
driver: bridge
- Вы можете выполнить следующую команду для запуска службы:
docker-compose up
- Убедитесь, что все настроено правильно, запросив службу ядра:
curl http://localhost:3567/hello
Если вы получите ответ Hello
, то настройка ядра завершена!