<story><title>Stack Overflow Developer Survey 2022</title><url>https://survey.stackoverflow.co/2022/</url></story><parent_chain><item><author>usrbinbash</author><text>Docker going strong :-)&lt;p&gt;Unsurprising, really. The usefulness of it cannot be overstated.&lt;p&gt;Doesn&amp;#x27;t even matter if its used anywhere in the deployment chain; simply having the ability to pull up a replica of almost any *nix environment on my laptop &lt;i&gt;in mere seconds&lt;/i&gt;, using it for tests, and then throwing it away resetting it &lt;i&gt;again in mere seconds&lt;/i&gt; is beyond awesome, no matter if what I&amp;#x27;m working on then goes into a huge complicated deployment chain, or is shoved onto some on-premises, zero-abstractions, baremetal server.&lt;p&gt;And how is it all configured? Plain text files. How is it controlled? Command Line. Meaning I can script it every way I want, using the tools I already have and use. Doesn&amp;#x27;t get in the way, doesn&amp;#x27;t demand that I work around it...it works with me and my tools in the same way they already work together.&lt;p&gt;Oh, and of course, good bye and good riddance to the days when I had to install and configure local RDMS for tests. Everything I use has an official image, so I just write some small setup script, a Dockerfile, knit everything together in a docker-compose.yml and presto, done: Application stack is up and running.&lt;p&gt;To me, Docker is as essential as my text editor these days.</text></item></parent_chain><comment><author>Taywee</author><text>I find for builds especially it&amp;#x27;s invaluable.  I have a Makefile that builds Docker images and runs build processes for all 4 supported versions of Debian, 3 LTS versions of Ubuntu, RHEL7, and Fedora 35 and 36.  It builds and packages the software on all of these, giving me debs and rpms for every relevant distro (&amp;quot;relevant&amp;quot; meaning distros used for servers or workstations for any of our employees and clients).&lt;p&gt;I then have another set of docker images for making package repositories and signing everything.&lt;p&gt;I do have a lot of mostly-redundant dockerfiles in some places, but in others I&amp;#x27;ve managed to leverage m4 to reduce the redundancy (though I&amp;#x27;m trying to keep it as slim as possible to avoid the pain of turning everything into a convoluted set of impossible-to-maintain macros).&lt;p&gt;Before this, I was using Vagrant and Ansible for builds, which was slow, memory hungry, and frustrating to debug.  Not to mention that dependencies that needed to be built statically couldn&amp;#x27;t be easily cached, which comes out of the box with Docker.</text></comment>
<story><title>Stack Overflow Developer Survey 2022</title><url>https://survey.stackoverflow.co/2022/</url></story><parent_chain><item><author>usrbinbash</author><text>Docker going strong :-)&lt;p&gt;Unsurprising, really. The usefulness of it cannot be overstated.&lt;p&gt;Doesn&amp;#x27;t even matter if its used anywhere in the deployment chain; simply having the ability to pull up a replica of almost any *nix environment on my laptop &lt;i&gt;in mere seconds&lt;/i&gt;, using it for tests, and then throwing it away resetting it &lt;i&gt;again in mere seconds&lt;/i&gt; is beyond awesome, no matter if what I&amp;#x27;m working on then goes into a huge complicated deployment chain, or is shoved onto some on-premises, zero-abstractions, baremetal server.&lt;p&gt;And how is it all configured? Plain text files. How is it controlled? Command Line. Meaning I can script it every way I want, using the tools I already have and use. Doesn&amp;#x27;t get in the way, doesn&amp;#x27;t demand that I work around it...it works with me and my tools in the same way they already work together.&lt;p&gt;Oh, and of course, good bye and good riddance to the days when I had to install and configure local RDMS for tests. Everything I use has an official image, so I just write some small setup script, a Dockerfile, knit everything together in a docker-compose.yml and presto, done: Application stack is up and running.&lt;p&gt;To me, Docker is as essential as my text editor these days.</text></item></parent_chain><comment><author>KronisLV</author><text>&amp;gt; Unsurprising, really. The usefulness of it cannot be overstated.&lt;p&gt;Furthermore, in addition to the points you mentioned, it also lets us:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  - trivially remap ports to whatever we want (and expose whichever we&amp;#x27;d like to the outside)
  - easily set resource limits, so your instance of MariaDB doesn&amp;#x27;t bring the whole server down and make it unresponsive
  - abstract away storage, in case you want a specific directory for your backups instead of following HFS (say, just have &amp;#x2F;app, treating the rest of the server as throwaway)
  - perhaps most importantly, your host OS is now separate from the actual containers that you are running, updating&amp;#x2F;redeploying either becomes a breeze
&lt;/code&gt;&lt;/pre&gt;
Recently, I actually decided to build my own containers for all of my personal use cases and it&amp;#x27;s been an interesting experience: I base everything on a LTS version of Ubuntu and just use apt for getting all of the runtimes (Node, Java, .NET, PHP, Ruby, Python, ...) for my own software, and so far it&amp;#x27;s a nice experience.&lt;p&gt;All I need is the base Ubuntu image from Docker Hub and the rest is up to me and the regular mirrors&amp;#x2F;repositories for the software packages in question, most of which can be stored on my own Nexus instance as needed, as well as the whole build process is primarily driven through Gitea, Drone CI and a few &amp;quot;servers&amp;quot; (repurposed old computers with passive cooling) that I have on my desk.&lt;p&gt;Though for now I also use Bitnami images for databases and such, which are also decent and which I largely just cache on my end: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;bitnami.com&amp;#x2F;stacks&amp;#x2F;containers&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;bitnami.com&amp;#x2F;stacks&amp;#x2F;containers&lt;/a&gt;&lt;p&gt;So what I&amp;#x27;m trying to say, is that there&amp;#x27;s a lot of flexibility that you can enjoy, both in making your own &amp;quot;templates&amp;quot; for web servers, programming languages, build toolchains etc., as well as you can grab pre-made stuff that other people have made, be it on Docker Hub, someone&amp;#x27;s Nexus&amp;#x2F;Artifactory&amp;#x2F;Harbor instance or another registry out there.&lt;p&gt;Docker and other OCI compatible tools have largely achieved the sort of adoption and widespread usage that projects like Nix and Guix could also benefit from.</text></comment>