stackmate
Search
K

Application Services

Stackmate supports Docker container images deployment on managed container services, like AWS ECS

What you get when introducing this service to your configuration

  • A managed container service running the container image specified with the cpu and memory restrictions you've applied. The service will run on the port specified in the configuration
  • A DNS record to the value set as your domain in the configuration
  • A load balancer routing HTTP and HTTPS traffic to the container
  • An SSL certificate for the domain name(s) specified

Required attributes

  • type - string - It should be set to application
  • image - string - The docker image to run, for example stackmate/sample-nodejs-app:latest. It should be anything that Docker can pull from (for example a public DockerHub repository)
  • port - number / Optional for non-web services - The port that your web application runs on. If your application doesn't expose a port (for example it's a backend worker or something similar), feel free to leave this empty

Optional attributes

  • cpu - number - The vCPU units that your container runs on. Acceptable values are: 0.25, 0.5, 1, 2, 4, 8 and 16.
  • memory - number - The GB of memory available that the container runs on. You can use 0.5 and any integer value between 1 and 120 but please keep in mind that cloud providers might introduce some restrictions:
  • domain - string - The domain name to use for your service. It can be both top-level domains (eg. stackmate.io) or subdomains (eg. app.stackmate.io)
  • www - boolean - Whether to add another DNS record that starts withwww (eg. www.stackmate.io). Please note: This only applies when using a top-level domain name as domain (like eg. stackmate.io)

Example configuration for an application container on AWS ECS

.stackmate/config.yml
---
state:
bucket: ...
lockTable: ...
environments:
production:
nodejs-app:
type: application
image: stackmate/sample-nodejs-app:latest
cpu: 0.5
memory: 1
port: 3000
domain: stackmate.io
# provider: aws # implied, since aws is the default provider
The example above will run a container of 0.5 vCPU, 1 GB of memory, that will expose port 3000 on AWS ECS Fargate. It will also create an application load balancer that will forward traffic to the container, using an auto-generated SSL certificate via ACM for stackmate.io. Finally, there will be a DNS record on Route53 with stackmate.io as the domain name, targeting the load balancer.