docker run -t bootclj/boot
TL;DR — There are now official boot-clj docker images. The one you are probably looking for is bootclj/boot:latest
Boot just got a whole whack of official docker images on Docker Hub. With so many images to choose from how can you know you are using the right one? Well this article should help, and also give you an idea when it’s best to use each one.
We are going to start with the image everyone is probably looking for, if you’re new to boot or a seasoned pro, this is the image for you:
https://hub.docker.com/r/bootclj/boot
This container comes preloaded with the latest version and is the easiest way to run boot-clj.
Command Line: docker run -t bootclj/boot
Dockerfile:FROM bootclj/boot AS boot
When To Use:
- 🖥local development
- ☁️ CI/CD DevOps Workflows
The next image is the one you should be most excited about, it’s also the most experimental. Future version of boot target native cross-platform support using Oracle GraalVM, this image includes an early preview of the bootstrap
native-image.
https://hub.docker.com/r/bootclj/boot-native
We really want you to give this version a try and report issues over on Github — but you should probably keep it out of production 💥.
Command Line: docker run -t bootclj/boot-native
Dockerfile:FROM bootclj/boot-native AS boot
When To Use:
- ☕️ checking compatibility with Oracle GraalVM
- 🖥local development
- 👩🔬experiments (polyglot apps)
- 🎨 art / 💥 explosions / 🔥 fire
Both of the previous images start off as bootclj/bootstrap
which is the docker image of our boot-clj loader.
https://hub.docker.com/r/bootclj/bootstrap
Our bootclj/boot
image is built with bootstrap
+ boot-clj
library, while bootclj/boot-native
is a directly compiled from bootstrap
using the native-image
tool from Oracle GraalVM.
Command Line: docker run -t bootclj/bootstrap
Dockerfile:FROM bootclj/bootstrap AS bootstrap
When To Use:
- 🖥hacking on boot
- 👩🔬custom boot versions
We put together a helper which greatly simplifies the developer experience when building java/clojure/boot projects. This is the bootclj/tooling
image, which includes boot
andlein
on top of our official clojure image.
https://hub.docker.com/r/bootclj/tooling
This image contains the most stable version of boot available, which is currently 2.8.2
.
Command Line: docker run -t bootclj/tooling
Dockerfile:FROM bootclj/tooling AS build
When To Use:
- 🖥hacking on boot
- 🎛complex projects w/ multiple build tools
We have also built an official clojure image for boot which can be used for general clojure development and includes both clj
and clojure
tools.
https://hub.docker.com/r/bootclj/clojure
Most of the time you will want one of the images above, however we hope that eventually BootV4 will be able to compile itself via the clj
tool. This would greatly simplify the previous images and cut down on the overall number of docker layers sent over the wire.
Command Line: docker run -t bootclj/clojure:1.10
Dockerfile:FROM bootclj/clojure:1.10 AS clojure
When To Use:
- 🖥development via clj
/ clojure
tools
- 🎃 a no-install way to try clojure in a local sandbox
(except docker, but you already have that don’t you 😜)
One of the many challenges when building java/clojure containers is which base image to use, or trying to create and maintain a slim and secure image on your own — No More! We took the openjdk:8-alpine
image and stuffed it with the common set of tools you will probably need as a developer.
https://hub.docker.com/r/bootclj/openjdk
Command Line: docker run -t bootclj/openjdk:8-alpine
Dockerfile:FROM bootclj/openjdk:8-alpine AS openjdk
When To Use:
- ☕️ development of java applications