Merge pull request #115793 from lbpdt/feature/docker-tools-layered-image-name-slashes
dockerTools.buildLayeredImage: image names with registry/ prefix
This commit is contained in:
commit
17a9f368e3
@ -254,5 +254,21 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||||||
"docker run --rm ${examples.layeredStoreSymlink.imageName} bash -c 'test -L ${examples.layeredStoreSymlink.passthru.symlink}'",
|
"docker run --rm ${examples.layeredStoreSymlink.imageName} bash -c 'test -L ${examples.layeredStoreSymlink.passthru.symlink}'",
|
||||||
"docker rmi ${examples.layeredStoreSymlink.imageName}",
|
"docker rmi ${examples.layeredStoreSymlink.imageName}",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
with subtest("buildImage supports registry/ prefix in image name"):
|
||||||
|
docker.succeed(
|
||||||
|
"docker load --input='${examples.prefixedImage}'"
|
||||||
|
)
|
||||||
|
docker.succeed(
|
||||||
|
"docker images --format '{{.Repository}}' | grep -F '${examples.prefixedImage.imageName}'"
|
||||||
|
)
|
||||||
|
|
||||||
|
with subtest("buildLayeredImage supports registry/ prefix in image name"):
|
||||||
|
docker.succeed(
|
||||||
|
"docker load --input='${examples.prefixedLayeredImage}'"
|
||||||
|
)
|
||||||
|
docker.succeed(
|
||||||
|
"docker images --format '{{.Repository}}' | grep -F '${examples.prefixedLayeredImage.imageName}'"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -447,7 +447,7 @@ rec {
|
|||||||
let
|
let
|
||||||
stream = streamLayeredImage args;
|
stream = streamLayeredImage args;
|
||||||
in
|
in
|
||||||
runCommand "${name}.tar.gz" {
|
runCommand "${baseNameOf name}.tar.gz" {
|
||||||
inherit (stream) imageName;
|
inherit (stream) imageName;
|
||||||
passthru = { inherit (stream) imageTag; };
|
passthru = { inherit (stream) imageTag; };
|
||||||
nativeBuildInputs = [ pigz ];
|
nativeBuildInputs = [ pigz ];
|
||||||
@ -746,8 +746,10 @@ rec {
|
|||||||
(lib.assertMsg (maxLayers > 1)
|
(lib.assertMsg (maxLayers > 1)
|
||||||
"the maxLayers argument of dockerTools.buildLayeredImage function must be greather than 1 (current value: ${toString maxLayers})");
|
"the maxLayers argument of dockerTools.buildLayeredImage function must be greather than 1 (current value: ${toString maxLayers})");
|
||||||
let
|
let
|
||||||
|
baseName = baseNameOf name;
|
||||||
|
|
||||||
streamScript = writePython3 "stream" {} ./stream_layered_image.py;
|
streamScript = writePython3 "stream" {} ./stream_layered_image.py;
|
||||||
baseJson = writeText "${name}-base.json" (builtins.toJSON {
|
baseJson = writeText "${baseName}-base.json" (builtins.toJSON {
|
||||||
inherit config;
|
inherit config;
|
||||||
architecture = defaultArch;
|
architecture = defaultArch;
|
||||||
os = "linux";
|
os = "linux";
|
||||||
@ -759,7 +761,7 @@ rec {
|
|||||||
# things like permissions set on 'extraCommands' are not overriden
|
# things like permissions set on 'extraCommands' are not overriden
|
||||||
# by Nix. Then we precompute the sha256 for performance.
|
# by Nix. Then we precompute the sha256 for performance.
|
||||||
customisationLayer = symlinkJoin {
|
customisationLayer = symlinkJoin {
|
||||||
name = "${name}-customisation-layer";
|
name = "${baseName}-customisation-layer";
|
||||||
paths = contentsList;
|
paths = contentsList;
|
||||||
inherit extraCommands;
|
inherit extraCommands;
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
@ -788,7 +790,7 @@ rec {
|
|||||||
# so they'll be excluded from the created images.
|
# so they'll be excluded from the created images.
|
||||||
unnecessaryDrvs = [ baseJson overallClosure ];
|
unnecessaryDrvs = [ baseJson overallClosure ];
|
||||||
|
|
||||||
conf = runCommand "${name}-conf.json" {
|
conf = runCommand "${baseName}-conf.json" {
|
||||||
inherit maxLayers created;
|
inherit maxLayers created;
|
||||||
imageName = lib.toLower name;
|
imageName = lib.toLower name;
|
||||||
passthru.imageTag =
|
passthru.imageTag =
|
||||||
@ -854,7 +856,7 @@ rec {
|
|||||||
--arg created "$created" |
|
--arg created "$created" |
|
||||||
tee $out
|
tee $out
|
||||||
'';
|
'';
|
||||||
result = runCommand "stream-${name}" {
|
result = runCommand "stream-${baseName}" {
|
||||||
inherit (conf) imageName;
|
inherit (conf) imageName;
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit (conf) imageTag;
|
inherit (conf) imageTag;
|
||||||
|
@ -427,4 +427,18 @@ rec {
|
|||||||
tag = "latest";
|
tag = "latest";
|
||||||
contents = [ pkgs.bash symlink ];
|
contents = [ pkgs.bash symlink ];
|
||||||
} // { passthru = { inherit symlink; }; };
|
} // { passthru = { inherit symlink; }; };
|
||||||
|
|
||||||
|
# image with registry/ prefix
|
||||||
|
prefixedImage = pkgs.dockerTools.buildImage {
|
||||||
|
name = "registry-1.docker.io/image";
|
||||||
|
tag = "latest";
|
||||||
|
config.Cmd = [ "${pkgs.hello}/bin/hello" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# layered image with registry/ prefix
|
||||||
|
prefixedLayeredImage = pkgs.dockerTools.buildLayeredImage {
|
||||||
|
name = "registry-1.docker.io/layered-image";
|
||||||
|
tag = "latest";
|
||||||
|
config.Cmd = [ "${pkgs.hello}/bin/hello" ];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user