diff --git a/docs/examples/dind.md b/docs/examples/dind.md index 7ee4fb406..c75a2094c 100644 --- a/docs/examples/dind.md +++ b/docs/examples/dind.md @@ -33,5 +33,5 @@ services: # environment: # - TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal volumes: - - /var/run/docker.sock:/var/run/docker.sock + - /var/run/docker.sock.raw:/var/run/docker.sock ``` diff --git a/src/Testcontainers/Builders/ContainerBuilder`3.cs b/src/Testcontainers/Builders/ContainerBuilder`3.cs index 8bf63d77a..468c894c9 100644 --- a/src/Testcontainers/Builders/ContainerBuilder`3.cs +++ b/src/Testcontainers/Builders/ContainerBuilder`3.cs @@ -92,17 +92,7 @@ public TBuilderEntity WithImage(string image) /// public TBuilderEntity WithImage(IImage image) { - if (string.IsNullOrEmpty(TestcontainersSettings.HubImageNamePrefix)) - { - return Clone(new ContainerConfiguration(image: image)); - } - - if (!string.IsNullOrEmpty(image.GetHostname())) - { - return Clone(new ContainerConfiguration(image: image)); - } - - return Clone(new ContainerConfiguration(image: new DockerImage(image.Repository, image.Registry, image.Tag, image.Digest, TestcontainersSettings.HubImageNamePrefix))); + return Clone(new ContainerConfiguration(image: image.ApplyHubImageNamePrefix())); } /// diff --git a/src/Testcontainers/Builders/IImageFromDockerfileBuilder`1.cs b/src/Testcontainers/Builders/IImageFromDockerfileBuilder`1.cs index 47f2d7131..d8be6544a 100644 --- a/src/Testcontainers/Builders/IImageFromDockerfileBuilder`1.cs +++ b/src/Testcontainers/Builders/IImageFromDockerfileBuilder`1.cs @@ -23,10 +23,10 @@ public interface IImageFromDockerfileBuilder /// /// Sets the name. /// - /// The name. + /// The image. /// A configured instance of . [PublicAPI] - TBuilderEntity WithName(IImage name); + TBuilderEntity WithName(IImage image); /// /// Sets the Dockerfile. diff --git a/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs b/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs index 5a4eea426..7ddc6e779 100644 --- a/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs +++ b/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs @@ -58,9 +58,9 @@ public ImageFromDockerfileBuilder WithName(string name) } /// - public ImageFromDockerfileBuilder WithName(IImage name) + public ImageFromDockerfileBuilder WithName(IImage image) { - return Merge(DockerResourceConfiguration, new ImageFromDockerfileConfiguration(image: name)); + return Merge(DockerResourceConfiguration, new ImageFromDockerfileConfiguration(image: image.ApplyHubImageNamePrefix())); } /// diff --git a/src/Testcontainers/Images/IImageExtensions.cs b/src/Testcontainers/Images/IImageExtensions.cs new file mode 100644 index 000000000..bbfde1ce0 --- /dev/null +++ b/src/Testcontainers/Images/IImageExtensions.cs @@ -0,0 +1,33 @@ +namespace DotNet.Testcontainers.Images +{ + using DotNet.Testcontainers.Configurations; + + /// + /// Provides extension methods for the interface. + /// + internal static class IImageExtensions + { + /// + /// Applies the Docker Hub image name prefix if it is configured. + /// + /// The original instance. + /// + /// A new instance with the Docker Hub image name prefix + /// applied, or the original instance if no prefix is set. + /// + public static IImage ApplyHubImageNamePrefix(this IImage image) + { + if (string.IsNullOrEmpty(TestcontainersSettings.HubImageNamePrefix)) + { + return image; + } + + if (!string.IsNullOrEmpty(image.GetHostname())) + { + return image; + } + + return new DockerImage(image.Repository, image.Registry, image.Tag, image.Digest, TestcontainersSettings.HubImageNamePrefix); + } + } +}