diff options
Diffstat (limited to 'nixpkgs/pkgs/build-support/docker')
-rw-r--r-- | nixpkgs/pkgs/build-support/docker/default.nix | 25 | ||||
-rw-r--r-- | nixpkgs/pkgs/build-support/docker/examples.nix | 24 |
2 files changed, 39 insertions, 10 deletions
diff --git a/nixpkgs/pkgs/build-support/docker/default.nix b/nixpkgs/pkgs/build-support/docker/default.nix index 4bda4d2a5c23..a42b025bc7f2 100644 --- a/nixpkgs/pkgs/build-support/docker/default.nix +++ b/nixpkgs/pkgs/build-support/docker/default.nix @@ -37,6 +37,11 @@ let + inherit (lib) + escapeShellArgs + toList + ; + mkDbExtraCommand = contents: let contentsList = if builtins.isList contents then contents else [ contents ]; @@ -191,13 +196,13 @@ rec { , postMount ? "" , postUmount ? "" }: - let - result = vmTools.runInLinuxVM ( + vmTools.runInLinuxVM ( runCommand name { preVM = vmTools.createEmptyImage { size = diskSize; fullName = "docker-run-disk"; + destination = "./image"; }; inherit fromImage fromImageName fromImageTag; @@ -278,12 +283,6 @@ rec { ${postUmount} ''); - in - runCommand name { } '' - mkdir -p $out - cd ${result} - cp layer.tar json VERSION $out - ''; exportImage = { name ? fromImage.name, fromImage, fromImageName ? null, fromImageTag ? null, diskSize ? 1024 }: runWithOverlay { @@ -291,7 +290,13 @@ rec { postMount = '' echo "Packing raw image..." - tar -C mnt --hard-dereference --sort=name --mtime="@$SOURCE_DATE_EPOCH" -cf $out . + tar -C mnt --hard-dereference --sort=name --mtime="@$SOURCE_DATE_EPOCH" -cf $out/layer.tar . + ''; + + postUmount = '' + mv $out/layer.tar . + rm -rf $out + mv layer.tar $out ''; }; @@ -402,7 +407,7 @@ rec { preMount = lib.optionalString (contents != null && contents != [ ]) '' echo "Adding contents..." - for item in ${toString contents}; do + for item in ${escapeShellArgs (map (c: "${c}") (toList contents))}; do echo "Adding $item..." rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/ done diff --git a/nixpkgs/pkgs/build-support/docker/examples.nix b/nixpkgs/pkgs/build-support/docker/examples.nix index c66aca56fea0..141c2ba0ea45 100644 --- a/nixpkgs/pkgs/build-support/docker/examples.nix +++ b/nixpkgs/pkgs/build-support/docker/examples.nix @@ -95,6 +95,15 @@ rec { finalImageTag = "2.2.1"; finalImageName = "nix"; }; + # Same example, but re-fetches every time the fetcher implementation changes. + # NOTE: Only use this for testing, or you'd be wasting a lot of time, network and space. + testNixFromDockerHub = pkgs.invalidateFetcherByDrvHash pullImage { + imageName = "nixos/nix"; + imageDigest = "sha256:85299d86263a3059cf19f419f9d286cc9f06d3c13146a8ebbb21b3437f598357"; + sha256 = "19fw0n3wmddahzr20mhdqv6jkjn1kanh6n2mrr08ai53dr8ph5n7"; + finalImageTag = "2.2.1"; + finalImageName = "nix"; + }; # 5. example of multiple contents, emacs and vi happily coexisting editors = buildImage { @@ -541,4 +550,19 @@ rec { config.Cmd = [ "hello" ]; includeStorePaths = false; }; + + # Example export of the bash image + exportBash = pkgs.dockerTools.exportImage { fromImage = bash; }; + + build-image-with-path = buildImage { + name = "build-image-with-path"; + tag = "latest"; + contents = [ pkgs.bashInteractive ./test-dummy ]; + }; + + layered-image-with-path = pkgs.dockerTools.streamLayeredImage { + name = "layered-image-with-path"; + tag = "latest"; + contents = [ pkgs.bashInteractive ./test-dummy ]; + }; } |