Unverified Commit 17a9f368 authored by Benjamin Hipple's avatar Benjamin Hipple Committed by GitHub
Browse files

Merge pull request #115793 from lbpdt/feature/docker-tools-layered-image-name-slashes

dockerTools.buildLayeredImage: image names with registry/ prefix
parents f7071040 419a4fa5
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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 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}'"
        )
  '';
})
+7 −5
Original line number Diff line number Diff line
@@ -447,7 +447,7 @@ rec {
    let
      stream = streamLayeredImage args;
    in
      runCommand "${name}.tar.gz" {
      runCommand "${baseNameOf name}.tar.gz" {
        inherit (stream) imageName;
        passthru = { inherit (stream) imageTag; };
        nativeBuildInputs = [ pigz ];
@@ -746,8 +746,10 @@ rec {
      (lib.assertMsg (maxLayers > 1)
      "the maxLayers argument of dockerTools.buildLayeredImage function must be greather than 1 (current value: ${toString maxLayers})");
    let
      baseName = baseNameOf name;

      streamScript = writePython3 "stream" {} ./stream_layered_image.py;
      baseJson = writeText "${name}-base.json" (builtins.toJSON {
      baseJson = writeText "${baseName}-base.json" (builtins.toJSON {
         inherit config;
         architecture = defaultArch;
         os = "linux";
@@ -759,7 +761,7 @@ rec {
      # things like permissions set on 'extraCommands' are not overriden
      # by Nix. Then we precompute the sha256 for performance.
      customisationLayer = symlinkJoin {
        name = "${name}-customisation-layer";
        name = "${baseName}-customisation-layer";
        paths = contentsList;
        inherit extraCommands;
        postBuild = ''
@@ -788,7 +790,7 @@ rec {
      # so they'll be excluded from the created images.
      unnecessaryDrvs = [ baseJson overallClosure ];

      conf = runCommand "${name}-conf.json" {
      conf = runCommand "${baseName}-conf.json" {
        inherit maxLayers created;
        imageName = lib.toLower name;
        passthru.imageTag =
@@ -854,7 +856,7 @@ rec {
            --arg created "$created" |
          tee $out
      '';
      result = runCommand "stream-${name}" {
      result = runCommand "stream-${baseName}" {
        inherit (conf) imageName;
        passthru = {
          inherit (conf) imageTag;
+14 −0
Original line number Diff line number Diff line
@@ -427,4 +427,18 @@ rec {
      tag = "latest";
      contents = [ pkgs.bash 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" ];
  };
}