Merge pull request #52870 from xtruder/pkgs/dockerTools/buildLayeredImage/extraCommands

dockerTools: allow to pass extraCommands, uid and gid to buildLayered image
This commit is contained in:
lewo
2019-01-10 19:00:19 +01:00
committed by GitHub
3 changed files with 12 additions and 3 deletions
+10 -3
View File
@@ -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 ];