Fresh logo

Deployment

While Fresh is designed to be deployed to Deno Deploy, it can be deployed to any system or platform that can run a Deno based web server.

Here are instructions for specific providers / systems:

Deno Deploy

The recommended way to deploy Fresh is by using Deno Deploy. Deno Deploy provides a GitHub integration that can deploy your Fresh projects to its globally distributed edge network in seconds, automatically.

View the getting started guide for instructions on how to deploy Fresh to Deno Deploy.

Docker

You can deploy Fresh to any platform that can run Docker containers. Docker is a tool to containerize projects and portably run them on any supported platform.

When packaging your Fresh app for Docker, it is important that you set the DENO_DEPLOYMENT_ID environment variable in your container. This variable needs to be set to an opaque string ID that represents the version of your application that is currently being run. This could be a Git commit hash, or a hash of all files in your project. It is critical for the function of Fresh that this ID changes when any file in your project changes - if it doesn’t, incorrect caching will cause your project to not function correctly.

Here is an example Dockerfile for a Fresh project:

Dockerfile
FROM denoland/deno:1.38.3

ARG GIT_REVISION
ENV DENO_DEPLOYMENT_ID=${GIT_REVISION}

WORKDIR /app

COPY . .
RUN deno cache main.ts

EXPOSE 8000

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

To build your Docker image inside of a Git repository:

Terminal
$ docker build --build-arg GIT_REVISION=$(git rev-parse HEAD) -t my-fresh-app .

Then run your Docker container:

Terminal
$ docker run -t -i -p 80:8000 my-fresh-app

To deploy to a cloud provider, push it to a container registry and follow their documentation.

Self Contained Executable

With Deno 2.1, you can create a self-contained executable of your Fresh project that includes all assets and dependencies. This executable can run on any platform without requiring Deno to be installed.

Terminal
$ deno build
$ deno compile --include static --include _fresh --include deno.json -A main.ts