Spring Loaded
nerdctl
Spring Loaded | nerdctl | |
---|---|---|
2 | 9 | |
2,710 | 0 | |
0.1% | - | |
0.0 | 0.0 | |
about 2 years ago | 24 days ago | |
Java | Go | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Spring Loaded
-
What blocked you from migrating beyond Java 8?
Hot reloading with spring-loaded doesn't support anything beyond JDK 8. New spring-devtools is much slower.
-
Speed boost achievement unlocked on Docker Desktop 4.6 for Mac
When using Java, with say, jib and skaffold, when a change is detected the image is rebuilt with some fairly smart cacheing being done to minimize the build time.
In more interesting setups, the class files aren't in the image but rather mapped in - much the same way one would with dynamic and then a hot reload - https://docs.spring.io/spring-boot/docs/1.3.8.RELEASE/refere...
> Spring Loaded goes a little further in that it can reload class definitions with changes in the method signatures. With some customization it can force an ApplicationContext to refresh itself (but there is no general mechanism to ensure that would be safe for a running application anyway, so it would only ever be a development time trick probably).
And this way, the container can remain the same with the class files being changed underneath it.
https://github.com/spring-projects/spring-loaded
nerdctl
- FLaNK Stack Weekly 18 September 2023
-
Trying Finch and introduce containerd
Direct use of containerd? containerd? turns out I didn't know anything about container technology. containerd was originally developed by Docker in 2015 as a daemon that provided basic container management capabilities under Docker. containerd's scope has gradually expanded and now seems to cover almost everything in the Docker Engine. For example, nerdctl is a CLI for containerd; the UX is almost identical to the Docker CLI, and Docker Compose is also supported (nerdctl compose).
- Speed boost achievement unlocked on Docker Desktop 4.6 for Mac
-
Docker for Mac Without Docker Desktop
Nerdctl[1] (for containerd) works fine with docker-compose.yml for my purposes (which are not much). The only issue I encountered was with environment variable substitution not working the same as docker-compose, but I didn't look hard for a solution and edited my compose file
1. https://github.com/containerd/nerdctl mine came bundled with Rancher desktop, and 'nerdctl compose up' is all I've needed
-
K8 cluster and containerd Deployment
I haven't tried it personally but you might be able to export the tar from docker host with docker cli and then load it on containerd host using nerdctl - https://github.com/containerd/nerdctl
-
Podman, the open source Docker alternative ported to M1 (Apple Silicon) machines
It looks like the real nice thing here is having a formula for QEMU with the ARM patch applied: https://github.com/simnalamburt/qemu/tree/hvf
With this I believe you could also used [nerd](https://github.com/containerd/nerdctl) instead of podman but I haven't tested it yet.
- Docker compatible open source: containerd
- Migrating from Docker to Podman
-
Running Nomad for a Home Server
One area, where containerd didn't had a first class support was CLI. the default containerd CLI "ctr" has a very naive implementation. The reason for that I believe is, containerd as a system was never meant to be consumed by humans, and was designed to be consumed by higher layers e.g. orchestration systems like nomad or k8s. However, with the deprecation of dockershim in k8s, and users moving to containerd, a new docker compatible CLI came out:
https://github.com/AkihiroSuda/nerdctl
If you just have containerd running on your system (with no docker daemon running), you can just install nerdctl and add
alias docker="nerdctl"
to your ~/.bashrc file.
Then you can just run any docker commands the way you used to with docker, and it will run those commands against the containerd API giving you the same CLI experience that you used to have with docker.
What are some alternatives?
DCEVM - Dynamic Code Evolution VM for Java 7/8
podman - Podman: A tool for managing OCI containers and pods.
Lombok - Very spicy additions to the Java programming language.
bottlerocket - An operating system designed for hosting containers
HotswapAgent - Java unlimited redefinition of classes at runtime.
lima - Linux virtual machines, with a focus on running containers
JHipster - JHipster, much like Spring initializr, is a generator to create a boilerplate backend application, but also with an integrated front end implementation in React, Vue or Angular. In their own words, it "Is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures."
nerdctl - contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ...
Immutables - Annotation processor to create immutable objects and builders. Feels like Guava's immutable collections but for regular value objects. JSON, Jackson, Gson, JAX-RS integrations included
Podman Desktop - Podman Desktop - A graphical tool for developing on containers and Kubernetes
JavaParser - Java 1-18 Parser and Abstract Syntax Tree for Java with advanced analysis functionalities.
podman-desktop - launch and setup vms for podman