diff --git a/Testcontainers.slnx b/Testcontainers.slnx
index 9606ccd28..d9461779b 100644
--- a/Testcontainers.slnx
+++ b/Testcontainers.slnx
@@ -66,7 +66,7 @@
-
+
@@ -139,7 +139,7 @@
-
+
diff --git a/src/Testcontainers/Containers/TarOutputMemoryStream.cs b/src/Testcontainers/Containers/TarOutputMemoryStream.cs
index b5abe7a10..0803484bc 100644
--- a/src/Testcontainers/Containers/TarOutputMemoryStream.cs
+++ b/src/Testcontainers/Containers/TarOutputMemoryStream.cs
@@ -36,7 +36,7 @@ public TarOutputMemoryStream(string targetDirectoryPath, ILogger logger)
///
/// The logger.
public TarOutputMemoryStream(ILogger logger)
- : base(new MemoryStream(), Encoding.Default)
+ : base(new MemoryStream(), TarArchiveDefaults.TarBlockFactor, Encoding.Default)
{
_logger = logger;
IsStreamOwner = false;
diff --git a/src/Testcontainers/Images/DockerfileArchive.cs b/src/Testcontainers/Images/DockerfileArchive.cs
index db1f24af1..7d049deb1 100644
--- a/src/Testcontainers/Images/DockerfileArchive.cs
+++ b/src/Testcontainers/Images/DockerfileArchive.cs
@@ -10,8 +10,8 @@ namespace DotNet.Testcontainers.Images
using System.Threading.Tasks;
using DotNet.Testcontainers.Configurations;
using ICSharpCode.SharpZipLib.Tar;
- using Microsoft.Extensions.Logging;
using JetBrains.Annotations;
+ using Microsoft.Extensions.Logging;
///
/// Generates a tar archive with Docker configuration files. The tar archive can be used to build a Docker image.
@@ -192,7 +192,7 @@ public async Task Tar(CancellationToken ct = default)
using (var tarOutputFileStream = new FileStream(dockerfileArchiveFilePath, FileMode.Create, FileAccess.Write))
{
- using (var tarOutputStream = new TarOutputStream(tarOutputFileStream, Encoding.Default))
+ using (var tarOutputStream = new TarOutputStream(tarOutputFileStream, TarArchiveDefaults.TarBlockFactor, Encoding.Default))
{
tarOutputStream.IsStreamOwner = false;
diff --git a/src/Testcontainers/TarArchiveDefaults.cs b/src/Testcontainers/TarArchiveDefaults.cs
new file mode 100644
index 000000000..33a85682e
--- /dev/null
+++ b/src/Testcontainers/TarArchiveDefaults.cs
@@ -0,0 +1,14 @@
+namespace DotNet.Testcontainers
+{
+ internal static class TarArchiveDefaults
+ {
+ // Keep the record size equal to the block size (512 B) so SharpZipLib does
+ // not write extra zero padding beyond the two standard EOF blocks. The
+ // default factor of 20 produces ~8 KB of zeros after EOF, which can trigger
+ // a race in Podman's archive handler. The tar subprocess exits after the EOF
+ // blocks while the HTTP sender is still flushing the padding, causing EPIPE
+ // (HTTP 500 "broken pipe"). See:
+ // https://github.com/testcontainers/testcontainers-dotnet/issues/1683.
+ internal const int TarBlockFactor = 1;
+ }
+}