dockerTools: Add example of using NixOS' etc
(cherry picked from commit 9b2af8673be82d48ce76c8c152de85ad921d26ba)
This commit is contained in:
parent
bfc5086ae9
commit
116832edbf
2 changed files with 46 additions and 0 deletions
|
@ -419,5 +419,10 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||
"docker rmi layered-image-with-path",
|
||||
)
|
||||
|
||||
with subtest("etc"):
|
||||
docker.succeed("${examples.etc} | docker load")
|
||||
docker.succeed("docker run --rm etc | grep localhost")
|
||||
docker.succeed("docker image rm etc:latest")
|
||||
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -9,6 +9,16 @@
|
|||
|
||||
{ pkgs, buildImage, buildLayeredImage, fakeNss, pullImage, shadowSetup, buildImageWithNixDb, pkgsCross }:
|
||||
|
||||
let
|
||||
nixosLib = import ../../../nixos/lib {
|
||||
# Experimental features need testing too, but there's no point in warning
|
||||
# about it, so we enable the feature flag.
|
||||
featureFlags.minimalModules = {};
|
||||
};
|
||||
evalMinimalConfig = module: nixosLib.evalModules { modules = [ module ]; };
|
||||
|
||||
in
|
||||
|
||||
rec {
|
||||
# 1. basic example
|
||||
bash = buildImage {
|
||||
|
@ -582,6 +592,37 @@ rec {
|
|||
includeStorePaths = false;
|
||||
};
|
||||
|
||||
etc =
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
nixosCore = (evalMinimalConfig ({ config, ... }: {
|
||||
imports = [
|
||||
pkgs.pkgsModule
|
||||
../../../nixos/modules/system/etc/etc.nix
|
||||
];
|
||||
environment.etc."hosts" = {
|
||||
text = ''
|
||||
127.0.0.1 localhost
|
||||
::1 localhost
|
||||
'';
|
||||
# For executables:
|
||||
# mode = "0755";
|
||||
};
|
||||
}));
|
||||
in pkgs.dockerTools.streamLayeredImage {
|
||||
name = "etc";
|
||||
tag = "latest";
|
||||
enableFakechroot = true;
|
||||
fakeRootCommands = ''
|
||||
mkdir -p /etc
|
||||
${nixosCore.config.system.build.etcActivationCommands}
|
||||
'';
|
||||
config.Cmd = pkgs.writeScript "etc-cmd" ''
|
||||
#!${pkgs.busybox}/bin/sh
|
||||
${pkgs.busybox}/bin/cat /etc/hosts
|
||||
'';
|
||||
};
|
||||
|
||||
# Example export of the bash image
|
||||
exportBash = pkgs.dockerTools.exportImage { fromImage = bash; };
|
||||
|
||||
|
|
Loading…
Reference in a new issue