Skip to main content

With Docker

Running the docker image ๐Ÿš€#

docker run -p 3567:3567 -d
  • To see all the env variables available, please see the README file.
  • The above command will start the container with an in-memory database. This means you do not need to connect it to MySQL to test out SuperTokens.
  • When you are ready to connect it to your database, please visit the Database setup section

Testing that the service is running ๐Ÿคž#

Open a browser and visit http://localhost:3567/hello. If you see a page that says Hello back, then the container was started successfully!

If you are having issues with starting the docker image, please feel free to reach out to us over email or via Discord.


The /hello route checks whether the database connection is set up correctly and will only return a 200 status code if there is no issue.

If you are using kubernetes or docker swarm, this endpoint is perfect for doing readiness and liveness probes.

Connecting the backend SDK with SuperTokens ๐Ÿ”Œ#

  • The default port for SuperTokens is 3567. You can change this by binding a different port in the docker run command. For example, docker run -p 8080:3567 will run SuperTokens on port 8080 on your machine.
  • The connection info will go in the supertokens object in the init function on your backend:
import supertokens from "supertokens-node";
supertokens.init({    supertokens: {        connectionURI: "http://localhost:3567",        apiKey: "someKey" // OR can be undefined    },    appInfo: {        apiDomain: "...",        appName: "...",        websiteDomain: "..."    },    recipeList: []});

There is no API key by default. Visit the "Auth flow customization" -> "SuperTokens Core customizations" -> "Adding API Keys" section to see how to add one.

Docker compose file#

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:    depends_on:      - db    ports:      - 3567:3567    environment:      MYSQL_CONNECTION_URI: mysql://supertokens_user:[email protected]:3306/supertokens    networks:      - app_network    restart: unless-stopped    healthcheck:      test: >        bash -c 'exec 3<>/dev/tcp/ && echo -e "GET /hello HTTP/1.1\r\nhost:\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"'      interval: 10s      timeout: 5s      retries: 5
networks:  app_network:    driver: bridge

Helm charts for Kubernetes#