Clarification: The clojure / clojure:latest image still includes all three 
build tools (lein, boot, tools-deps). Only the default one you get if you 
don't specify a different one has changed from lein to clj. But this image 
has also inherited the ENTRYPOINT / CMD changes I outlined above, so be 
aware of that. It should figure out what you want if you do something like 
`docker run clojure lein` though, so let us know on GitHub 
(https://github.com/Quantisan/docker-clojure) if it doesn't do what you 
expect in this regard.
On Wednesday, December 1, 2021 at 7:01:59 PM UTC-7 Wes Morgan wrote:

> Some important and potentially breaking changes to be aware of in the 
> official Clojure Docker images are landing soon (likely already present in 
> the images on Docker Hub by the time you read this):
>
> - JDK 17 is the new LTS release, and as a result, is now the JDK version 
> you get if you don't specify a different one in your Docker tag (which we 
> recommend doing in production).
>
> - The clojure:latest image (which is what you get if you only specify 
> 'clojure' for your image name) now defaults to clj (i.e. tools.deps) 
> instead of lein. When these images were first created, Leiningen was the de 
> facto Clojure build tool. Nowadays we have an official first party tool, so 
> we've moved to that. As always, we only recommend using this image in 
> one-off commands and specifying build tool, clojure version, Linux distro, 
> and openjdk base version where those matter.
>
> - All images using openjdk-17 or higher now use an ENTRYPOINT of their 
> respective build tool (i.e. lein, clj, or boot) and a CMD that launches a 
> REPL instead of the previous practice of the CMD being build-tool repl 
> (roughly). This means a bare docker run should behave approximately the 
> same way as before, except you can now do things like: `docker run clojure 
> -e '(+ 1 2)'` and it will print '3'. We left the older openjdk images alone 
> in case folks were relying on the old behavior in some cases, and we don't 
> want to break things where people were using full-specification tags.
>     - If you're not familiar with this ENTRYPOINT vs. CMD concept in 
> Docker, it basically boils down to this: The CMD gets replaced with 
> whatever you put after the image name in a docker run command. So now you 
> can specify arguments to the build tool of whatever image you're running 
> instead of redundantly specifying it first. You can override the default 
> ENTRYPOINT with the `--entrypoint foo` arg to docker run (must come before 
> the image name) but see the "important caveat" below as many use cases will 
> hopefully be covered already without using that.
>     - An important caveat: The entrypoint script we're using tries to 
> detect if you specify a CMD that isn't an argument nor subcommand of that 
> image's build tool and runs it as a standalone executable. In other words, 
> `docker run -ti clojure bash` still gets you a bash prompt. Please report 
> issues on https://github.com/Quantisan/docker-clojure if you find errors 
> in that logic. It is a requirement that official Docker images behave this 
> way, but we also want to make sure it is robust in the vast majority of use 
> cases.
>
> - Some time ago we announced that debian slim-bullseye would be the 
> default distro you'd get if you didn't specify one, but not all of our 
> images were migrated to that default. Now they all are hopefully.
>
> - The alpine-based images (only available for openjdk-18 currently) are 
> now using Alpine Linux 3.15 which was recently released. The biggest change 
> you'd probably notice there is that an rlwrap package is finally available 
> in Alpine and installed in the tools-deps images so the clj repl will 
> behave as it should.
>
> - There is a long-standing bug in Docker that makes rlwrap crash if it is 
> started too soon after a container starts. We used to work around this with 
> a naive 1 second wait in the tools-deps images. We are now shipping with a 
> much better solution that waits a much shorter amount of time when it can, 
> but still waits for as long as it needs to on slower systems. This means 
> you should generally notice faster container starts for tools-deps images 
> than before.
>
> OK I think that's it! Please report issues at 
> https://github.com/Quantisan/docker-clojure if you run into anything that 
> unexpectedly doesn't work.
>
> New tools-deps images for releases after 1.10.3.1020 were waiting on this 
> being merged, so those should appear soon too.
>
> Feel free to reply here if you have any questions, and may the REPL be 
> with you.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/66b37c00-705e-45f8-9b95-99f68c1fa29dn%40googlegroups.com.

Reply via email to