Hacker News new | past | comments | ask | show | jobs | submit login
From WampServer to Vagrant to QEMU (andrewpillar.com)
35 points by bkq on Nov 11, 2022 | hide | past | favorite | 18 comments



Similar journey but several different languages and trust me when I say I've used and tried them all.

To name a few off the top of my head - XAMPP, WAMP, EasyPHP, Vagrant, QEMU, WSL, VirtualBox (headless and ui), Devilbox, Vanilla Docker, (Homestead, Sail, Valet, Laragon)

My favorites where #3 Laragon, #2 Devilbox and number one nowadays is Lando.

Lando [1] is the best of all worlds as I have projects running node, c#, java and php and while I haven't needed to I can use or drop to raw docker files if I need to. Everyone I have introduced to it ended up loving it for ease of use and convenience. It comes with about everything you need and you can craft your own recipes and access them as needed. In one laravel project I have meilisearch running [2] and more. I could go on and on about this tool but it makes the dev process so much easier where I can focus on problem solving and not wrangling with commands and tools.

[1] - https://lando.dev/ [2] - https://usa.adaptagency.com/news-knowledge/meilisearch-and-l...


If you like Lando, there's also https://ddev.com/. Since switching from vanilla docker to it I haven't had to faff with any configuration; it just works. Amazing!


I was just thinking fondly back to XAMPP... was so massively cool to teenage me. Also that logo was very cool to me [0].

[0] https://1.bp.blogspot.com/-LRsqmuaX9Q0/XhhZfDGmkYI/AAAAAAAAA...


> I was just thinking fondly back to XAMPP...

Actually used XAMPP just a few years ago, for some quick and dirty PHP development, before eventually moving over to containerizing everything I needed for that project. It's still around and usable: https://www.apachefriends.org/index.html

Either way, nowadays I basically run all of my "business" applications in containers, because that's the lowest common denominator for isolated, scalable and relatively easily manageable environments that's not going anywhere (OCI seems too widespread now, even if something like Podman might displace Docker in particular somewhat).

That said, there's also something nice to be said about things running with fewer abstractions along the way locally (debugging can be easier in some tech stacks that way, instead of figuring out how to do remote debugging, same for other instrumentation like seeing all of the application threads/memory/SQL queries etc.), or a set of highly focused tools for a particular tech stack.


Honestly, I just use the newly built-in PHP web server for my hobby projects. I mostly develop with Laravel so just run the artisan server.


Same at times, sqlite driver etc but you quickly need redis or sqlite taps out on some more complicated or better supported framework feature you need.


Lando does look good, but what I really want is a similar tool which isn't using Docker. I use macOS, and Docker on macOS is just a poor experience. And most tools now have good cross-platform support, so just installing the native tools portably ought to work quite well.


I wish they had a cloud offering, it's something I'll look into setting up one of these days as I've been getting more and more motivated to move some of my lesser used/stable projects to the cloud so I don't have them on my main machine and can access them quickly if I'm away or a client needs some change. I've heard good things about https://www.gitpod.io/. Also funnily enough I have a m1 mac and I use lando on it without any issues whatsoever, other than starting docker I don't interact with it at all.


Maybe canonical's multipass is a good option. It creates Ubuntu VMs very quickly using hyperkit, has as they were containers with docker. It has some limitations but works pretty well overall.

https://multipass.run


asdf seems to have a php plugin. May be worth trying.


Interesting path, he's skipped straight over the Vagrant->Docker step most took (myself included)


Sometimes Docker is not a replacement for VMs (e.g., you need to run systemd because that's how you run apps in production and you want to simulate it in your local env)


I used Vagrant-LXC at my employer.

I wrote a tool to coordinate Vagrant-LXC projects. We had over 20 Microservices that were deployed with Chef or ansible and I used a python script to coordinate the deployment of them locally.

I began writing an open source version on GitHub

https://GitHub.com/samsquire/platform-up

The idea is it detects if it needs to redeploy based on file changes so it's fast to run if there are few changes. You can also deploy your entire infrastructure locally with this approach.

I even had load balancing with haproxy working properly with it at my employer.


AFAIK you can use the libvirt provider for Vagrant that will use qemu VMs (via libvirtd management) from the standard Vagrant workflow, presumably solving the performance problems he mentioned.

TBH I miss Vagrant. I wish there were a Dockerfile, but for VMs.


FWIW it's not too difficult to convert a docker image to a VM rootfs. See rootfs_builder[0] for example.

I'm currently working on a wrapper for QEMU that has docker-like semantics for pull/run/start/stop/exec/etc, but it will pull docker images from docker registries and convert them to qcow2 for you and run them in QEMU. It works on Linux and Windows and should run on MacOS and BSD eventually.

[0]: https://github.com/ForAllSecure/rootfs_builder

EDIT: Also see https://iximiuz.com/en/posts/from-docker-container-to-bootab...


Why not look at Packer? I use it quite significantly for creating base VMs.

Provisioner scripts can effectively be broken down from the Dockerfile RUN layers as Bash or Powershell scripts. Then output as a vagrant box or hypervisor VM export VM of choice. For exposing ports, just run an iptables or powershell New-NetFirewallRule.

Whilst you can't get volume mounts can use the file provisioner to embed local files on build.

Then import it and create a default snapshot. Want it back to its original state? Revert snapshot and done!


Yeah, I think I stumbled across using the libvirt provider, however libvirt is just another abstraction (a very useful one) over multiple virtualization technologies. I much prefer working directly with QEMU for local dev environments since I only need a one and done machine.


i had a very brief excitation that this might be a Web Application Messaging Protocol (wamp[1]) post but the rest of the topics seemed orthogonal. Yes, not the topic.

[1] https://wamp-proto.org/




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: