Deploying a Deno Express application to Fly

Bjorn Krolsavatar

Bjorn Krols

Published on
01 February 2023

In this tutorial you will learn how to deploy a containerized Deno Express application to Fly.

The final code of this article can be found here.


  • A Fly account
  • A computer with Deno, Docker, and Flyctl (the Fly CLI)

Creating the application


export { default as express } from "npm:express@4.18.2";


import { express } from "./deps.ts";

const application = express();

const port = 8080;

  .get("/", (req, res) => {
      message: "Hello, World!",
  .get("/random", (req, res) => {
      number: Math.floor(Math.random() * 100),

application.listen(port, () => {
  console.log(`Application listening on port ${port}`);

To run the application locally:

deno run -A main.ts

Containerizing the application


FROM denoland/deno:alpine-1.30.0

WORKDIR /usr/src/app

COPY deps.ts .
RUN deno cache deps.ts

ADD . .
RUN deno cache main.ts


CMD ["run", "-A", "main.ts"]

To build and run the container locally:

docker build . -t hello-world
docker run -dp 8080:8080 hello-world

Deploying the application

  1. fly launch to prepare your fly.toml file, containing your project settings. Inside the fly.toml file, ensure the service's internal_port (8080 by default) matches the port exposed by your container.
  2. fly deploy to deploy your application.
  3. fly open to open the deployed application in your browser.

Cleaning up

fly destroy your-unique-app-id -y removes your application from the Fly platform.

That's all! Don't forget to delete the application once you're done testing.

The final code of this article can be found here.

Subscribe to our newsletter

The latest news, articles, and resources, sent to your inbox weekly.

More like this