-
Notifications
You must be signed in to change notification settings - Fork 10
polylith example
This fork of clojure-polylith-realworld-example-app has a new project that uses jib to package the realworld-backend
into a container image. There is an additional project at projects/realworld-backend-jib
which demonstrates this packaging.
Clone or fork https://github.com/slimslenderslacks/clojure-polylith-realworld-example-app.
Build the container using the following commands.
cd projects/realworld-backend-jib
clj -T:jib build
This is configured to build an image to a local docker daemon (tagged with realworld-backend:latest
).
Start up the server using the following command.
docker run --rm -p 6003:6003 realworld-backend
We could not use the existing project at projects/realworld-backend/deps.edn
. This project was designed to run the server in the repl, and uses the furkan3ayraktar/polylith-clj-deps-ring library, which builds a classloader suitable for running a polylith app in a repl; however, this entrypoint is not ideal for a container. The jib packaging places all of the maven dependencies (slowest moving) in one layer. The clojure code is all packaged in the next layer; however, the code from the components could be packaged in a separate layer from the bases, and projects. This might be an advantage when the code in components are changing more slowly, and can be more aggressively cached during build cycles.