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:
FROM denoland/deno:latest
ARG GIT_REVISION
ENV DENO_DEPLOYMENT_ID=${GIT_REVISION}
WORKDIR /app
COPY . .
RUN deno install --allow-scripts
RUN deno task build
EXPOSE 8000
CMD ["deno", "serve", "-A", "_fresh/server.js"]InfoThe
deno install --allow-scriptsstep is required to populatenode_modulesand run any post-install scripts needed by npm packages (e.g. Tailwind CSS). This must happen beforedeno task build.
To build your Docker image inside of a Git repository:
$ docker build --build-arg GIT_REVISION=$(git rev-parse HEAD) -t my-fresh-app .Then run your Docker container:
$ docker run -t -i -p 80:8000 my-fresh-appTo deploy to a cloud provider, push it to a container registry and follow their documentation.