Prepare to use Release
Last updated
Was this helpful?
Last updated
Was this helpful?
Take a look at to be sure you meet the requirements.
Release supports building and running complex applications. Release requires a docker-compose.yml
, package.json
, or .release.yaml
file to be in the root of your application's Git repository. Release uses these files to generate the that is used as a blueprint to build your environments.
If your application has nested directories where your docker-compose.yaml
or package.json
files reside, you can add a .release.yaml
file to the root of your repository to tell Release where these files are located. See reference guide for more information.
We recommend using a and a directory-per-service at the project root when your application requires two or more services. Here is an example directory structure for three services that require docker builds:
If you're not using a monorepo, you can create an application for each repository and connect them using environment variables in each of those applications. See for more information.
The best way to test if your application will run in Release is to get Docker Compose to run your application locally. See for more details.
Release allows you to quickly spin up containerized services without the traditional wait times involved with cloud-native services.
When running an application locally or in a Release ephemeral environment, we recommend that you isolate your application's external dependencies. Consider using off-the-shelf Docker images to represent the cloud-native services that your application depends on, such as Postgres, Redis, etc. Visit to find many off-the-shelf Docker images.
You can use environment variables to connect ephemeral environments to AWS-native services such as RDS, however, we recommend using these off-the-shelf Docker images to speed up deployment and simplify set up.
This is an example of a docker-compose.yml
file that builds three Docker images and leverages two off-the-shelf containers for Redis and Postgres:
Release detects many popular services such as Redis, MySQL, Postgres, RabbitMQ, and many more, and will handle opening standard ports for these services.
Here's an example of adding Redis, RabbitMQ, and Memcached with minimal configuration in Docker Compose:
In this example, Release creates a hostname for the frontend service that exposes port 8080.
Internal services, like your data stores, caches, and background workers, should not be exposed to the internet, and should only be available internally to other services defined in your docker-compose
.
This example shows Postgres opening a container port on 5432 that another service can consume.
Most applications use environment variables to define how services talk to each other and/or change the behavior of an application in a given environment. Release uses the environment variables provided in your docker-compose
as a starting point. All of the environment variables for each service defined in your docker-compose
are loaded into Release when you initially create an application. Release supports all of the standard docker-compose
mechanisms for defining environment variables.
You can also set environment variables directly in your docker-compose
file:
Release supports most options from . Release looks for all services with a build
stanza, and executes a docker build for each service found.
Release uses the (HOST:CONTAINER
) definition to determine when a service should be exposed to the internet. When Release encounters a service with a HOST:CONTAINER
definition, it creates a NodePort, load balancer rule, and DNS hostname entry for the service.
You can use to specify an external env
file:
If you have dynamic or secret environment variables, you can read more about in our reference guide.