/supertokens-docker-mysql

Dockerfile for SuperTokens with MySQL

Primary LanguageShell

Quickstart

# This will start with an in memory database.

$ docker run -p 3567:3567 -d supertokens/supertokens-mysql

Configuration

You can use your own config.yaml file as a shared volume or pass the key-values as environment variables.

If you do both, only the shared config.yaml file will be considered.

Using environment variable

Available environment variables

  • Core [click for more info]
    • COOKIE_DOMAIN
    • REFRESH_API_PATH
    • SUPERTOKENS_HOST
    • SUPERTOKENS_PORT
    • ACCESS_TOKEN_VALIDITY
    • ACCESS_TOKEN_BLACKLISTING
    • ACCESS_TOKEN_PATH
    • ACCESS_TOKEN_SIGNING_KEY_DYNAMIC
    • ACCESS_TOKEN_SIGNING_KEY_UPDATE_INTERVAL
    • ENABLE_ANTI_CSRF
    • REFRESH_TOKEN_VALIDITY
    • INFO_LOG_PATH
    • ERROR_LOG_PATH
    • COOKIE_SECURE
    • SESSION_EXPIRED_STATUS_CODE
    • COOKIE_SAME_SITE
    • MAX_SERVER_POOL_SIZE
  • MySQL: [click for more info]
    • MYSQL_USER
    • MYSQL_PASSWORD
    • MYSQL_CONNECTION_POOL_SIZE
    • MYSQL_HOST
    • MYSQL_PORT
    • MYSQL_DATABASE_NAME
    • MYSQL_KEY_VALUE_TABLE_NAME
    • MYSQL_SESSION_INFO_TABLE_NAME
    • MYSQL_PAST_TOKENS_TABLE_NAME
$ docker run \
	-p 3567:3567 \
	-e MYSQL_USER=mysqlUser \
	-e MYSQL_HOST=localhost \
	-e MYSQL_PORT=3306 \
	-e MYSQL_PASSWORD=password \
	-d supertokens/supertokens-mysql

Using custom config file

  • In your config.yaml file, please make sure you store the following key / values:
    • core_config_version: 0
    • host: "0.0.0.0"
    • mysql_config_version: 0
    • info_log_path: null (to log in docker logs)
    • error_log_path: null (to log in docker logs)
  • The path for the config.yaml file in the container is /usr/lib/supertokens/config.yaml
$ docker run \
	-p 3567:3567 \
	-v /path/to/config.yaml:/usr/lib/supertokens/config.yaml \
	-d supertokens/supertokens-mysql

Logging

  • By default, all the logs will be available via the docker logs <container-name> command.
  • You can setup logging to a shared volume by:
    • Setting the info_log_path and error_log_path variables in your config.yaml file (or passing the values asn env variables).
    • Mounting the shared volume for the logging directory.
$ docker run \
	-p 3567:3567 \
	-v /path/to/logsFolder:/home/logsFolder \
	-e INFO_LOG_PATH=/home/logsFolder/info.log \
	-e ERROR_LOG_PATH=/home/logsFolder/error.log \
	-e MYSQL_USER=mysqlUser \
	-e MYSQL_PASSWORD=password \
	-d supertokens/supertokens-mysql

Database setup

  • Before you start this container, make sure to initialize your database.
  • You do not need to ensure that the MySQL database has started before this container is started. During bootup, SuperTokens will wait for ~1 hour for a MySQL instance to be available.
  • If MYSQL_USER and MYSQL_PASSWORD are not provided, then SuperTokens will use an in memory database.

CLI reference

Please refer to our documentation for this.