Build Docker Images

Encore supports building Docker images directly from the CLI, which can then be self-hosted on your own infrastructure of choice.

This can be a good choice if Encore Cloud isn't a good fit for your use case, or if you want to migrate away.

Building your own Docker image

To build your own Docker image, use encore build docker MY-IMAGE:TAG from the CLI.

This will compile your application using the host machine and then produce a Docker image containing the compiled application. The base image defaults to scratch for GO apps and node:slim for TS, but can be customized with --base.

This is exactly the same code path that Encore's CI system uses to build Docker images, ensuring compatibility.

By default, all your services are included and started by the Docker image. If you want to specify specific services and gateways to include, you can use the --services and --gateways flags.

encore build docker --services=service1,service2 --gateways=api-gateway MY-IMAGE:TAG

The image will default to run on port 8080, but you can customize it by setting the PORT environment variable when starting your image.

docker run -e PORT=8081 -p 8081:8081 MY-IMAGE:TAG

Congratulations, you've built your own Docker image! 🎉 Continue to learn how to configure infrastructure.