If you have a Docker infrastructure in AWS, then Amazon ECR is a likely registry option being used in your environment. In this post I’ll show you how to build a Docker image from a simple Scala application using the sbt-native-packager plugin, and how to publish it to Amazon ECR using sbt-ecr.
Once published, the image could be deployed by Amazon ECS or any other service, that can authenticate to Amazon ECR and pull Docker images from it. Note that service deployment isn’t covered by the scope of this article, just the getting my artifact to some repository in an Amazon region part.
Hello World in Docker
Consider a minimal Scala application:
… with a simple build config in build.sbt
We can add Docker capabilities to this SBT project by including the
sbt-native-packager plugin in the project/plugins.sbt
file:
… and enabling some additional settings for the Docker build itself:
Once set up, you can run sbt docker:publishLocal
to build the Docker image and
publish it to the local registry.
Publishing to Amazon ECR
Add the ECR plugin to your project/plugins.sbt
:
Include the following project settings:
Once everything is set up you can push
the image to ECR by running:
Please note, that you may need to set up credentials for the Amazon SDK, if you haven’t done it earlier.