diff options
author | lewo <lewo@abesis.fr> | 2019-01-10 19:00:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-10 19:00:19 +0100 |
commit | 7612a6add4cb0e16716d183bef559f9a0730eb80 (patch) | |
tree | b59aeb727c40eefb5944230820e306894b4720e2 /pkgs/build-support | |
parent | b75aff7202418d68699db617e63fc8a68a4b7449 (diff) | |
parent | 954cda5c9d05b105cdc7bc7871c7d124736545c6 (diff) | |
download | nixpkgs-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')
-rw-r--r-- | pkgs/build-support/docker/default.nix | 13 | ||||
-rw-r--r-- | pkgs/build-support/docker/examples.nix | 1 |
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 ]; }; |