4 ms·
> - reproducible builds and dependencies management: distribution package managers As in? What distro package manager is allowing me to give a project newbie a
by throwaway_4ever 5y ago
> - reproducible builds and dependencies management: distribution package managers
As in? What distro package manager is allowing me to give a project newbie a single command to hit the ground running across all platforms, "docker-compose up"? What distro package manager is allowing me to have several different platforms that can just grab a GitHub repo link and deploy it viola?
- trabant00 5y agoI don't understand the "on all platforms" requirement. Why do you need that? Why not choose one and have consistent dev, test and prod envs?
- throwaway_4ever 5y agoThe target platform is the same, but the dev environments are different. People will prefer their own MacOS, Windows, or Linux based setups, and all the different headaches of various conflicting libraries and architectures (ARM v. x86). Docker seems much simpler than having them setup a matching VM or cloud desktop. The different platforms for deploying is about cloud-agnosticism, avoiding vendor lock-in by using an easily reproducible standard. Even for just one cloud deployment, Ansible and similar tools aren't as simple and reproducible as a docker-compose.yml and Dockerfile. I'm not saying I've started from 0 and tried all the comparable solutions here, comparing and contrasting them. It's that when I looked at the lay of the land, asked "How do I get a Django app easily reproducibly built and deployed, across dev and prod, the Docker solution that I went with appeared to be such a shortcut to the rest.
- trabant00 5y ago> People will prefer their own MacOS, Windows, or Linux based setups As a devops I strongly oppose developing on the desktop OS. Only your repos and code editor should be on your workstation, and you should have dedicated dev environment in a server farm - be that vms or containers. > "How do I get a Django app easily reproducibly built and deployed, across dev and prod, the Docker solution that I went with appeared to be such a shortcut to the rest. Only you don't deploy Docker in prod, do you? The fact that the container starts means nothing if it doesn't interface with the other contanerized apps. So you start needing a Kubernetes cluster locally and all goes to hell from there.
- stephenr 5y agoA VM in and of itself isn't a problem for developers, expecting them to configure it themselves is. Vagrant is a really good solution for this: it is generally VM based, but the same "box" (basically an image) can be build for multiple providers, so you can use Docker or LXC as your provider, I can use Parallels on a Mac, Jenny can use VMWare Desktop, Billy can use HyperV, and the casual tester can use VirtualBox. This also doesn't preclude the use of covering different architectures for the boxes: years ago I setup the tooling for a project where one developer had a laptop without a 64bit-capable CPU, so most of us ran an amd64 box, but his was i386.
- chriswarbo 5y ago> What distro package manager is allowing me to give a project newbie a single command to hit the ground running across all platforms Nix (it's the "distro package manager" of NixOS, but runs happily on any Linux distro, without even needing root permissions; it's also supported on macOS. I've seen references to other Unix systems like BSD, for WSL, and possibly other OSes, but they aren't officially supported). In fact, we don't even use "a single command"; our projects have .envrc files for direnv (which has Nix support out-of-the-box), so our shells automatically enter/exit a (reproducible) development environment just based on their current working directory. > "docker-compose up" I wasn't aware that Docker was cross platform? I thought it used Linux containers, which requires running a VM on macOS, etc. (e.g. that's what applications like "Docker Desktop" do in the background). Apparently it also supports "Windows containers" now, but those aren't even compatible with the Linux ones! > What distro package manager is allowing me to have several different platforms that can just grab a GitHub repo link and deploy it viola? Nix does this with a built-in function called `fetchGit` (there are also specialised functions like `fetchFromGitHub` and `fetchFromGitLab` which download the tar.gz of a given commit, rather than checking-out the repo). "Deployment" varies, depending on what you want; e.g. it could be a simple 'nix-copy-closure' (to a physical machine, a running VM, etc.), it could be making a container image (with a call to `ociTools.buildImage`, `dockerTools.buildImage`, etc.), or a VM image (VirtualBox, libvirt or Xen). NixOps and Disnix can orchestrate and deploy those, but I've not tried them (we use AWS ECR and CloudFormation).
- zekrioca 5y agoTried using Nix on my aarch64-darwin and it did not work. Saw many github issues around, trying this [1], this [2], and that, but it did not work. Tried Homebrew and it worked like a charm. [1] https://github.com/NixOS/nixpkgs/issues/95903 https://github.com/NixOS/nixpkgs/issues/95903 [2] https://github.com/nix-community/home-manager/issues/2266 https://github.com/nix-community/home-manager/issues/2266
- chriswarbo 5y agoHmm, I've not used that architecture/OS myself (I use NixOS on an i686-linux Thinkpad and an aarch64-linux Pinephone, and Nix on an x86_64-darwin Macbook). From skimming the comments, it looks like Nix itself works; although there seem to be many packages in the Nixpkgs repo which don't have that architecture/OS in their metadata.