running sbt on Docker

in

I wanted to run sbt inside Docker, so I created some images. The GitHub repo is eed3si9n/docker-sbt.

AdoptOpenJDK

AdoptOpenJDK provides prebuilt OpenJDK binaries for various platforms based on the community-maintained OpenJDK source tree. They provide Docker images as adoptopenjdk/openjdk8 etc based on Ubuntu or Alpine Linux.

See Java Is Still Free document for more details on OpenJDK situation.

JDK 11

One of my motivation for creating this image is to do JDK 11 testing in a repeatable fashion. So I've created sbt image based on adoptopenjdk/openjdk8 as well as adoptopenjdk/openjdk11.

usage

For AdoptOpenJDK JDK 8:

docker pull eed3si9n/sbt:jdk8-alpine
docker run -it --mount src="$(pwd)",target=/opt/workspace,type=bind eed3si9n/sbt:jdk8-alpine

For AdoptOpenJDK JDK 11:

docker pull eed3si9n/sbt:jdk11-alpine
docker run -it --mount src="$(pwd)",target=/opt/workspace,type=bind eed3si9n/sbt:jdk11-alpine

This will start a shell inside Alpine Linux as a non-root user who has access to /opt/workspace mapped to the current directory of the host machine, and sbt 1.2.8 installed.

To reuse the Ivy cache from the host machine, mount it as follows:

docker run -it --mount src="$(pwd)",target=/opt/workspace,type=bind \
--mount src="$HOME/.ivy2",target=/home/demiourgos1/.ivy2,type=bind eed3si9n/sbt:jdk8-alpine

other images

There are over 1000 images if you search for sbt on Docker Hub.