Product update: Dockerfile support

tl;dr In addition to buildpacks, you can now build your app from a custom Dockerfile. The docs are here.

My goal when I started AppPack was to build a system that allowed people to deploy apps to AWS easily without any real DevOps knowledge. They don't need to understand and configure the miriad of AWS services, automated build pipeline configuration, and finally Docker and Dockerfiles.

What I learned, however, is that lots of our users already understand and use Dockerfiles, but still want the benefits of having AppPack manage their infrastructure for them. The most popular reasons are:

  • We already use Docker for local development and want better parity between our development and production instances.
  • We want to be able to customize our builds beyond what is easily attainable with Buildpacks.
  • We have a deeper understanding of Dockerfiles than Buildpacks and want to leverage that to make it easier to troubleshoot issues.

Those are all very valid reasons, so we built it into the product. Our pipeline still defaults to Buildpacks, and if you don't have a Dockerfile, they are still the fastest way to get started. But you can now add a Dockerfile to your repo and replace your Procfile with an apppack.toml configuration file. The apppack.toml file can tell the build pipeline to use the Dockerfile and defines the services it will run.

Ready to deploy your Docker image to AWS?

AppPack makes deploying to AWS with Dockerfiles a breeze!

cat putting on sunglasses with the caption, I'm ready

Not just BYOB, but BYOP with GitHub Actions

So, with Dockerfiles, you can bring your own image builder to AppPack. It also makes it much simpler to bring your own pipeline. I've worked closely with a customer who has a complex GitHub Actions workflow that forks off multiple processes, writes deploy info back to their Jira instance, and more. While we could make this work with AppPack's pipeline, they are happy with how things are working on GitHub Actions and don't want to migrate.

With Dockerfile builds this process is a lot easier. They can build their image however they want and do any sort of complex testing/verification on it. All they need to provide AppPack is the image and their apppack.toml file. Optionally, if you provide a build.log and test.log, you'll get full visibility into those in our dashboard as well.

We've updated our docs on working with GitHub Actions with this new simplified process.

Or just keep it simple

Dockerfiles and custom build pipelines are more advanced topics and, just like when we started, aren't required to use AppPack. If you haven't been itching to use Dockerfiles or customize your build pipeline, keep using the defaults. They still work great for the majority of our customers.