1. 16

    1. 4

      I love process-compose, I’m glad it exists. At work, we’ve turned it upside down and used process-compose to orchestrate a number of services inside a single container, by using process-compose as the entry point. We’re assembling the whole thing using Nix and the devenv project, we (and our users) have been very happy so far.

      Here’s how the resulting image looks: https://hub.docker.com/r/kadena/devnet

      Here’s the source code that generates it: https://github.com/kadena-io/devnet/tree/main/nix

      The result is analogous to distributing something like a NixOS image, but as a single container.

      1. 2

        If applications had feelings this would be pretty cruel.

        1. 1

          Well, those applications can find solace in their production deployments then :) This is just meant as a development environment that contains some useful services from the ecosystem packaged up in a convenient way to distribute.

    2. 3

      Perhaps I’m missing something, but how is this different from systemd? I mean, besides running (possibly) on non-Linux systems?

      1. 6

        It doesn’t run as pid1. It’s something you can easily use in development tooling.

      2. 2

        This is basically a containerless Docker Compose, completely different from systemd

    3. 3

      I’m surprised to see this project, given the existence of much prior art, like Overmind, God, Foreman, Supervisord, Monit, and many others.

      Or, my favorite solution, run Nomad on a single host, with the exec or rawexec task driver.

      1. 6

        Foreman does not appear to support dependencies or health checks or the like. A limitation shared with anything Procfile-based (like Overmind).

        From what I can tell, God required you writing Ruby, and still didn’t have dependencies like Process Compose does. A quick glance through supervisord’s doc suggest it doesn’t, either.

        I’m not going to check the rest, they don’t seem to have the same goals.

        The great thing about process compose is that it is easy. A yaml file and a single binary, and I can set up fairly complicated setups with ease, like this one (it’s configured via Nix & process-compose-flake, but the configuration is similar, just Nix instead of YAML). This contraption here sets up three daemons: WriteFreely, Minio, and Caddy in front of them. It includes helper steps to make sure all three are configured right. Dependencies make sure things start in the order they need to, and in the end, I have all three nicely running with their combined output neatly colored on stdout.

        As for Nomad?

        Download and learn Nomad, all within 15 minutes.

        I was done with process-compose in 2. It’s simple, straightforward, gets the job done, without being heavy. It’s also free software, unlike Nomad.

        1. 1

          hashicorp stuff does tend to be overengineered in bad ways (as in, adding complexity for little benefit), compared to being engineered to be dead simple and hide complexity (a-la tailscale)

      2. 1

        Or, my favorite solution, run Nomad on a single host, with the exec or rawexec task driver.

        Nomad is not a reasonable alternative, as it’s not Free Software anymore. I used to stan hard for Nomad, but it’s a good as dead now.

    4. [Comment removed by author]