Running Java on Docker images on a Mac
vanwilgenburg.wordpress.com
vanwilgenburg.wordpress.com
This setup also allows us test resiliency under bad network conditions using https://github.com/IG-Group/Havoc/
The other use case for Docker, for me at least, is running specific versions of libraries. The other day we had a problem with npm and it was working for everyone locally. Turns out we were a few versions behind and it was much simpler to do `docker run -it node:0.12 bash` than to install the node version manager alongside my homebrew install of node.
It gets you a single jar without classloader interference or onejar-zipping madness
It even supports automatic download of dependencies like the clojure runtime and sharing those between apps.
A ton of microservices are built with the JVM. Turns out containers are pretty good at that as well.
I'm also assuming folks reading this have had some context around microservices and k8s. Microservices no matter what language are well suited to containers and container orchestration. It's a widely used pattern to have self contained services in containers with some sort of orchestration managing the containers those services are deployed in.
Those "facts" were targeting an audience that have at least some familiarity with containers and the basics of the problems they solve but maybe less familiarity with the JVM (which from my experience is the typical reader on HN).
Granted, this is only for US public companies, and only for systems that are in scope for your 404 audits.
If everything you run is Java, it might not make sense, but in a polyglot, the uniformity can be really beneficial.
In the early days of Unix, there weren't sysadmins really...just one or two devs on each team that dealt with it. They were later centralized, and...seen this cycle before.
I have seen organisation devolve like that on the database side. At one time you have a DBA team monitoring server, planning for capacity, upgrade, optimising script and owning datamodel. A few years of cost cutting and 3 guys own the datamodel of tens of application, over hundreds of servers, basically becoming a huge bottleneck for the 300+ developers. When adding a column is eating half of your project budgets and adding uncertainty on delivery date, developers become creative. The best of them sneak a way to get DBA access, the others multiplex value in existing columns (Hello, "PROPERTIES" xml column !)
It requires some data on disk, which is about 100GB. Since my laptop has a pathetic 250GB SSD I got an external drive for this. All well.
But I get the problem that the Mac shuts down after doing IO from inside the VM for about 10-20 minutes. Just a black screen and a second later reboot.
Has anyone on this forum had the same issue? I have the same when running in VirtualBox, and after wiping the Mac totally and reinstalling the OS. Happens using both USB and Thunderbolt.
Deploying on Linux anyways, so Docker isn't a performance overhead.
As someone who develops on a Macbook with a 128 GB drive, this is completely crazy to me. How is it taking up 100 GB? I use Docker for Mac for most of my day-to-day development, mostly for running docker-compose environments so I have separated Redis/Postgres environments for each app. They take up nowhere near 100 GB. Something sounds very wrong, but I can't imagine how it would be caused by the JVM running Clojure.
How can it be wrong to simply have 100 GB of data that you need to operate on? If that's how much data you have then that's how much you have.
A couple of blockchains. As said, it's the data of my app, not Clojure or Docker.