Skip to content

Commit 082eea4

Browse files
authored
chore: Do not pre-pull cached images (#1032)
1 parent aa4385d commit 082eea4

File tree

5 files changed

+24
-6
lines changed

5 files changed

+24
-6
lines changed

src/Testcontainers.FakeGcsServer/FakeGcsServerBuilder.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace Testcontainers.FakeGcsServer;
44
[PublicAPI]
55
public sealed class FakeGcsServerBuilder : ContainerBuilder<FakeGcsServerBuilder, FakeGcsServerContainer, FakeGcsServerConfiguration>
66
{
7-
public const string FakeGcsServerImage = "fsouza/fake-gcs-server:1.47.5";
7+
public const string FakeGcsServerImage = "fsouza/fake-gcs-server:1.47";
88

99
public const ushort FakeGcsServerPort = 4443;
1010

src/Testcontainers/Clients/FilterByProperty.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ namespace DotNet.Testcontainers.Clients
55

66
internal sealed class FilterByProperty : ConcurrentDictionary<string, IDictionary<string, bool>>
77
{
8-
public void Add(string property, string value)
8+
public FilterByProperty Add(string property, string value)
99
{
1010
var values = GetOrAdd(property, _ => new Dictionary<string, bool>());
1111
values[value] = true;
12+
return this;
1213
}
1314
}
1415
}

src/Testcontainers/Clients/TestcontainersClient.cs

+12-1
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,18 @@ public async Task<string> BuildAsync(IImageFromDockerfileConfiguration configura
330330
{
331331
var dockerfileArchive = new DockerfileArchive(configuration.DockerfileDirectory, configuration.Dockerfile, configuration.Image, _logger);
332332

333-
await Task.WhenAll(dockerfileArchive.GetBaseImages().Select(image => PullImageAsync(image, ct)))
333+
var baseImages = dockerfileArchive.GetBaseImages().ToArray();
334+
335+
var filters = baseImages.Aggregate(new FilterByProperty(), (dictionary, baseImage) => dictionary.Add("reference", baseImage.FullName));
336+
337+
var cachedImages = await Image.GetAllAsync(filters, ct)
338+
.ConfigureAwait(false);
339+
340+
var repositoryTags = new HashSet<string>(cachedImages.SelectMany(image => image.RepoTags));
341+
342+
var uncachedImages = baseImages.Where(baseImage => !repositoryTags.Contains(baseImage.FullName));
343+
344+
await Task.WhenAll(uncachedImages.Select(image => PullImageAsync(image, ct)))
334345
.ConfigureAwait(false);
335346

336347
_ = await Image.BuildAsync(configuration, dockerfileArchive, ct)

tests/Testcontainers.Tests/Assets/pullBaseImages/Dockerfile

+8-2
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,11 @@ FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
55
FROM mcr.microsoft.com/dotnet/runtime:6.0 AS runtime
66
FROM build
77
FROM build AS publish
8-
FROM mcr.microsoft.com/dotnet/aspnet:6.0.21-jammy-amd64
9-
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/aspnet:6.0.22-jammy-amd64
8+
FROM mcr.microsoft.com/dotnet/aspnet:6.0.22-jammy-amd64
9+
10+
# https://github.com/testcontainers/testcontainers-dotnet/issues/993.
11+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/aspnet:6.0.23-jammy-amd64
12+
13+
# https://github.com/testcontainers/testcontainers-dotnet/issues/1030.
14+
FROM mcr.microsoft.com/dotnet/sdk:$SDK_VERSION_6_0 AS build_sdk_6_0
15+
FROM build_sdk_6_0 AS publish_sdk_6_0

tests/Testcontainers.Tests/Unit/Images/ImageFromDockerfileTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public void DockerfileArchiveGetBaseImages()
3030
Assert.Equal(4, baseImages.Length);
3131
Assert.Contains(baseImages, item => "mcr.microsoft.com/dotnet/sdk:6.0".Equals(item.FullName));
3232
Assert.Contains(baseImages, item => "mcr.microsoft.com/dotnet/runtime:6.0".Equals(item.FullName));
33-
Assert.Contains(baseImages, item => "mcr.microsoft.com/dotnet/aspnet:6.0.21-jammy-amd64".Equals(item.FullName));
3433
Assert.Contains(baseImages, item => "mcr.microsoft.com/dotnet/aspnet:6.0.22-jammy-amd64".Equals(item.FullName));
34+
Assert.Contains(baseImages, item => "mcr.microsoft.com/dotnet/aspnet:6.0.23-jammy-amd64".Equals(item.FullName));
3535
}
3636

3737
[Fact]

0 commit comments

Comments
 (0)