summary refs log tree commit diff
path: root/pkgs/build-support/docker
diff options
context:
space:
mode:
authorlewo <lewo@abesis.fr>2019-01-10 19:00:19 +0100
committerGitHub <noreply@github.com>2019-01-10 19:00:19 +0100
commit7612a6add4cb0e16716d183bef559f9a0730eb80 (patch)
treeb59aeb727c40eefb5944230820e306894b4720e2 /pkgs/build-support/docker
parentb75aff7202418d68699db617e63fc8a68a4b7449 (diff)
parent954cda5c9d05b105cdc7bc7871c7d124736545c6 (diff)
downloadnixpkgs-7612a6add4cb0e16716d183bef559f9a0730eb80.tar
nixpkgs-7612a6add4cb0e16716d183bef559f9a0730eb80.tar.gz
nixpkgs-7612a6add4cb0e16716d183bef559f9a0730eb80.tar.bz2
nixpkgs-7612a6add4cb0e16716d183bef559f9a0730eb80.tar.lz
nixpkgs-7612a6add4cb0e16716d183bef559f9a0730eb80.tar.xz
nixpkgs-7612a6add4cb0e16716d183bef559f9a0730eb80.tar.zst
nixpkgs-7612a6add4cb0e16716d183bef559f9a0730eb80.zip
Merge pull request #52870 from xtruder/pkgs/dockerTools/buildLayeredImage/extraCommands
dockerTools: allow to pass extraCommands, uid and gid to buildLayered image
Diffstat (limited to 'pkgs/build-support/docker')
-rw-r--r--pkgs/build-support/docker/default.nix13
-rw-r--r--pkgs/build-support/docker/examples.nix1
2 files changed, 11 insertions, 3 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index 731dd1ea992..b3a4b774b12 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -316,14 +316,21 @@ rec {
     # Files to add to the layer.
     contents,
     baseJson,
+    extraCommands,
     uid ? 0, gid ? 0,
   }:
     runCommand "${name}-customisation-layer" {
       buildInputs = [ jshon rsync tarsum ];
+      inherit extraCommands;
     }
     ''
       cp -r ${contents}/ ./layer
 
+      if [[ -n $extraCommands ]]; then
+        chmod ug+w layer
+        (cd layer; eval "$extraCommands")
+      fi
+
       # Tar up the layer and throw it into 'layer.tar'.
       echo "Packing layer..."
       mkdir $out
@@ -494,6 +501,8 @@ rec {
     # Time of creation of the image. Passing "now" will make the
     # created date be the time of building.
     created ? "1970-01-01T00:00:01Z",
+    # Optional bash script to run on the files prior to fixturizing the layer.
+    extraCommands ? "", uid ? 0, gid ? 0,
     # Docker's lowest maximum layer limit is 42-layers for an old
     # version of the AUFS graph driver. We pick 24 to ensure there is
     # plenty of room for extension. I believe the actual maximum is
@@ -501,8 +510,6 @@ rec {
     maxLayers ? 24
   }:
     let
-      uid = 0;
-      gid = 0;
       baseName = baseNameOf name;
       contentsEnv = symlinkJoin { name = "bulk-layers"; paths = (if builtins.isList contents then contents else [ contents ]); };
 
@@ -531,7 +538,7 @@ rec {
           name = baseName;
           contents = contentsEnv;
           baseJson = configJson;
-          inherit uid gid;
+          inherit uid gid extraCommands;
         };
       result = runCommand "docker-image-${baseName}.tar.gz" {
         buildInputs = [ jshon pigz coreutils findutils jq ];
diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix
index a5a65fb2a40..d78e35c5662 100644
--- a/pkgs/build-support/docker/examples.nix
+++ b/pkgs/build-support/docker/examples.nix
@@ -155,6 +155,7 @@ rec {
   layered-image = pkgs.dockerTools.buildLayeredImage {
     name = "layered-image";
     tag = "latest";
+    extraCommands = ''echo "(extraCommand)" > extraCommands'';
     config.Cmd = [ "${pkgs.hello}/bin/hello" ];
     contents = [ pkgs.hello pkgs.bash pkgs.coreutils ];
   };