|Docs

Deploy a Ktor App

deploymentktorkotlinbackend

Ktor is an asynchronous framework for creating connected applications in Kotlin, built by JetBrains.

Note: There is no official Railway template for Ktor yet. You can check the community for Ktor templates.

This guide covers how to deploy a Ktor app on Railway in three ways:

  1. From a GitHub repository.
  2. Using the CLI.
  3. Using a Dockerfile.

Deploy from a GitHub repo

To deploy a Ktor app on Railway directly from GitHub, follow the steps below:

  1. Create a New Project.
  2. Click Deploy from GitHub repo.
  3. Select your Ktor GitHub repo.
    • Railway requires a valid GitHub account to be linked. If your Railway account isn't associated with one, you will be prompted to link it.
  4. Click Deploy Now.

Railway uses Railpack to detect and build Gradle projects automatically.

Note: Your Ktor app needs to bind to 0.0.0.0 and read the port from the PORT environment variable. You can do this in application.conf:

Or programmatically:

Once the deployment is successful, a Railway service will be created for you. By default, this service will not be publicly accessible.

To set up a publicly accessible URL for the service, navigate to the Networking section in the Settings tab of your new service and click on Generate Domain.

Deploy from the CLI

  1. Install and authenticate with the CLI.
  2. cd into your Ktor project directory.
    • You can skip this step if you are already in your app directory.
  3. Run railway init within the app directory to create a new project.
  4. Run railway up to deploy.
    • The CLI will now scan, compress and upload your Ktor app files to Railway's backend for deployment.

Use a Dockerfile

  1. Create a Dockerfile in your Ktor app's root directory.

  2. Add the content below to the Dockerfile:

  3. Either deploy via the CLI or from GitHub.

Railway automatically detects the Dockerfile, and uses it to build and deploy the app.

Note: Railway supports also deployment from public and private Docker images.

Next steps

Explore these resources to learn how you can maximize your experience with Railway: