Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
github.com/whereswardy/empire
Empire is a control layer on top of Amazon EC2 Container Service (ECS) that provides a Heroku like workflow. It conforms to a subset of the Heroku Platform API, which means you can use the same tools and processes that you use with Heroku, but with all the power of EC2 and Docker.
Empire is targeted at small to medium sized startups that are running a large number of microservices and need more flexibility than what Heroku provides. You can read the original blog post about why we built empire on the Remind engineering blog.
To use Empire, you'll need to have an ECS cluster running. See the quickstart guide for more information.
Empire aims to make it trivially easy to deploy a container based microservices architecture, without all of the complexities of managing systems like Mesos or Kubernetes. ECS takes care of much of that work, but Empire attempts to enhance the interface to ECS for deploying and maintaining applications, allowing you to deploy Docker images as easily as:
$ emp deploy remind101/acme-inc:master
Empire supports a subset of the Heroku Platform API, which means any tool that uses the Heroku API can probably be used with Empire, if the endpoint is supported.
As an example, you can use the hk
CLI with Empire like this:
$ HEROKU_API_URL=<empire_url> hk ...
However, the best user experience will be by using the emp command, which is a fork of hk
with Empire specific features.
Empire's routing layer is backed by internal ELBs. Any application that specifies a web process will get an internal ELB attached to its associated ECS Service. When a new version of the app is deployed, ECS manages spinning up the new versions of the process, waiting for old connections to drain, then killing the old release.
When a new internal ELB is created, an associated CNAME record will be created in Route53 under the internal TLD, which means you can use DNS for service discovery. If we deploy an app named feed
then it will be available at http://feed
within the ECS cluster.
Apps default to only being exposed internally, unless you add a custom domain to them. Adding a custom domain will create a new external ELB for the ECS service.
Any tagged Docker image can be deployed to Empire as an app. Empire doesn't enforce how you tag your Docker images, but we recommend tagging the image with the git sha that it was built from, and deploying that. We have a tool for performing deployments called Tugboat that supports deploying Docker images to Empire.
When you deploy a Docker image to Empire, it will extract a Procfile
from the WORKDIR. Like Heroku, you can specify different process types that compose your service (e.g. web
and worker
), and scale them individually. Each process type in the Procfile maps directly to an ECS Service.
Caveats
Because docker run
does not exec commands within a shell, commands specified within the Procfile will also not be exec'd within a shell. This means that you cannot specify environment variables in the Procfile. The following is not valid:
web: acme-inc server -port=$PORT
If you need to specify environment variables as part of the command, we recommend splitting out your Procfile commands into small bash shims instead:
web: ./bin/web
#!/bin/bash
set -e
exec acme-inc server -port=$PORT
Pull requests are more than welcome! For help with setting up a development environment, see CONTRIBUTING.md
We have a google group, empire-dev, where you can ask questions and engage with the Empire community.
You can also join our Slack team for discussions and support.
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.