Nix é melhor que o construtor de imagens do Docker
- O Nix tem três aspectos: gerenciador de pacotes, linguagem e sistema operacional.
- Há vantagens em usar o Nix para criar imagens Docker em vez do próprio construtor de imagens do Docker.
- O Nix permite conhecer antecipadamente todas as dependências necessárias no processo de build e possibilita compilar mesmo sem conexão com a internet.
Vantagens do Nix
- Com o Nix, é possível criar imagens Docker de forma mais eficiente.
- O Nix divide as dependências em um número mínimo de camadas Docker, refletindo apenas as mudanças mínimas nas atualizações.
- Quando vários serviços estão no mesmo repositório, eles podem compartilhar camadas Docker entre si, aumentando a eficiência.
Exemplo do serviço de citações de Douglas Adams
- É explicado o processo de empacotar um programa Go com Nix e convertê-lo em uma imagem Docker.
- É possível criar uma imagem em camadas usando a função
dockerTools.buildLayeredImage.
- Como resultado, obtém-se uma imagem de contêiner comum, que pode ser implantada em qualquer lugar.
Opinião do GN⁺
- Usar o Nix pode melhorar bastante o gerenciamento de dependências e a reprodutibilidade dos builds no processo de desenvolvimento de software.
- Em comparação com o Docker, o Nix pode economizar tempo e recursos no longo prazo graças à natureza determinística dos builds.
- No entanto, os novos conceitos e a forma de uso do Nix podem ser um pouco difíceis para iniciantes, e pode haver dificuldades para integrá-lo aos pipelines de CI/CD existentes.
- Ao adotar essa tecnologia, é necessário considerar um período de treinamento e adaptação dentro da equipe, além da compatibilidade com a infraestrutura existente.
- Outra ferramenta com funcionalidades semelhantes ao Nix é o Guix, que também oferece gerenciamento de pacotes e builds determinísticos.
1 comentários
Comentários do Hacker News
Tentei várias vezes gostar do Nix, mas acho que chegou a hora de desistir.
Nix e NixOS estão em um estado parecido com o do git antes do GitHub.
flakesenix-command, o Nix não faz sentido, e ambos são experimentais e vêm desativados por padrão.Passei 2 a 3 dias tentando construir imagens Docker no Darwin, e este artigo parece estar zombando de mim.
Falta no post do blog uma explicação de por que camadas Docker compartilhadas são úteis.
A experiência de construir imagens Docker para aplicações Java com Nix não foi muito agradável.
É útil se você já adotou o Nix, e espero que soluções de gerenciamento de pacotes mais declarativas, como Nix ou Guix, se popularizem.
Como engenheiro de plataforma, eu queria gostar do Nix, mas ele não é fácil para todo mundo.
devbox add python@3.11.O Nix é incompatível com o upstream a ponto de exigir um esforço considerável de empacotamento para a maioria das bibliotecas.
Recentemente tentei construir uma imagem base de CI com Nix, mas a imagem ficou grande demais e alguns jobs não funcionaram direito por causa de problemas de linking.
Estou usando o Dagger, e ele resolve a maior parte dos problemas como a segunda tentativa dos criadores do Docker.