Merge pull request #25148 from obsidiansystems/docker-dirlinks
dockerTools: optionally preserve directory symlinks
This commit is contained in:
commit
1034aa8e9c
@ -249,6 +249,10 @@ rec {
|
|||||||
baseJson,
|
baseJson,
|
||||||
# Files to add to the layer.
|
# Files to add to the layer.
|
||||||
contents ? null,
|
contents ? null,
|
||||||
|
# When copying the contents into the image, preserve symlinks to
|
||||||
|
# directories (see `rsync -K`). Otherwise, transform those symlinks
|
||||||
|
# into directories.
|
||||||
|
keepContentsDirlinks ? false,
|
||||||
# Additional commands to run on the layer before it is tar'd up.
|
# Additional commands to run on the layer before it is tar'd up.
|
||||||
extraCommands ? "", uid ? 0, gid ? 0
|
extraCommands ? "", uid ? 0, gid ? 0
|
||||||
}:
|
}:
|
||||||
@ -262,7 +266,7 @@ rec {
|
|||||||
echo "Adding contents..."
|
echo "Adding contents..."
|
||||||
for item in $contents; do
|
for item in $contents; do
|
||||||
echo "Adding $item"
|
echo "Adding $item"
|
||||||
rsync -ak --chown=0:0 $item/ layer/
|
rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "No contents to add to layer."
|
echo "No contents to add to layer."
|
||||||
@ -303,6 +307,10 @@ rec {
|
|||||||
runAsRoot,
|
runAsRoot,
|
||||||
# Files to add to the layer. If null, an empty layer will be created.
|
# Files to add to the layer. If null, an empty layer will be created.
|
||||||
contents ? null,
|
contents ? null,
|
||||||
|
# When copying the contents into the image, preserve symlinks to
|
||||||
|
# directories (see `rsync -K`). Otherwise, transform those symlinks
|
||||||
|
# into directories.
|
||||||
|
keepContentsDirlinks ? false,
|
||||||
# JSON containing configuration and metadata for this layer.
|
# JSON containing configuration and metadata for this layer.
|
||||||
baseJson,
|
baseJson,
|
||||||
# Existing image onto which to append the new layer.
|
# Existing image onto which to append the new layer.
|
||||||
@ -327,7 +335,7 @@ rec {
|
|||||||
echo "Adding contents..."
|
echo "Adding contents..."
|
||||||
for item in ${toString contents}; do
|
for item in ${toString contents}; do
|
||||||
echo "Adding $item..."
|
echo "Adding $item..."
|
||||||
rsync -ak --chown=0:0 $item/ layer/
|
rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/
|
||||||
done
|
done
|
||||||
|
|
||||||
chmod ug+w layer
|
chmod ug+w layer
|
||||||
@ -391,6 +399,10 @@ rec {
|
|||||||
fromImageTag ? null,
|
fromImageTag ? null,
|
||||||
# Files to put on the image (a nix store path or list of paths).
|
# Files to put on the image (a nix store path or list of paths).
|
||||||
contents ? null,
|
contents ? null,
|
||||||
|
# When copying the contents into the image, preserve symlinks to
|
||||||
|
# directories (see `rsync -K`). Otherwise, transform those symlinks
|
||||||
|
# into directories.
|
||||||
|
keepContentsDirlinks ? false,
|
||||||
# Docker config; e.g. what command to run on the container.
|
# Docker config; e.g. what command to run on the container.
|
||||||
config ? null,
|
config ? null,
|
||||||
# Optional bash script to run on the files prior to fixturizing the layer.
|
# Optional bash script to run on the files prior to fixturizing the layer.
|
||||||
@ -417,11 +429,12 @@ rec {
|
|||||||
if runAsRoot == null
|
if runAsRoot == null
|
||||||
then mkPureLayer {
|
then mkPureLayer {
|
||||||
name = baseName;
|
name = baseName;
|
||||||
inherit baseJson contents extraCommands uid gid;
|
inherit baseJson contents keepContentsDirlinks extraCommands uid gid;
|
||||||
} else mkRootLayer {
|
} else mkRootLayer {
|
||||||
name = baseName;
|
name = baseName;
|
||||||
inherit baseJson fromImage fromImageName fromImageTag
|
inherit baseJson fromImage fromImageName fromImageTag
|
||||||
contents runAsRoot diskSize extraCommands;
|
contents keepContentsDirlinks runAsRoot diskSize
|
||||||
|
extraCommands;
|
||||||
};
|
};
|
||||||
result = runCommand "docker-image-${baseName}.tar.gz" {
|
result = runCommand "docker-image-${baseName}.tar.gz" {
|
||||||
buildInputs = [ jshon pigz coreutils findutils jq ];
|
buildInputs = [ jshon pigz coreutils findutils jq ];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user