Skip to content

Commit a289481

Browse files
committed
Refactor Docker container management to use Testcontainers
1 parent 70aecee commit a289481

19 files changed

+517
-962
lines changed

Directory.Packages.props

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,16 @@
5050

5151
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0" />
5252

53-
<PackageVersion Include="Docker.DotNet.Enhanced" Version="3.131.0" />
53+
<PackageVersion Include="Testcontainers" Version="4.3.0" />
54+
<PackageVersion Include="Testcontainers.MongoDb" Version="4.3.0" />
55+
<PackageVersion Include="Testcontainers.PostgreSql" Version="4.3.0" />
56+
<PackageVersion Include="Testcontainers.Redis" Version="4.3.0" />
57+
<PackageVersion Include="Testcontainers.RabbitMq" Version="4.3.0" />
58+
<PackageVersion Include="Testcontainers.MySql" Version="4.3.0" />
59+
<PackageVersion Include="Testcontainers.MsSql" Version="4.3.0" />
60+
<PackageVersion Include="Testcontainers.Elasticsearch" Version="4.3.0" />
61+
<PackageVersion Include="Testcontainers.MariaDb" Version="4.3.0" />
5462
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
55-
<PackageVersion Include="Polly" Version="8.5.2" />
56-
<PackageVersion Include="SharpZipLib" Version="1.4.2" />
5763

5864
<PackageVersion Include="MongoDB.Driver" Version="3.0.0" />
5965
<PackageVersion Include="MySqlConnector" Version="2.4.0" />
@@ -83,7 +89,7 @@
8389
<PackageVersion Include="Typesense" Version="7.33.0" />
8490

8591
<PackageVersion Include="FluentFTP" Version="35.0.4" />
86-
<PackageVersion Include="SSH.NET" Version="2023.0.0" />
92+
<PackageVersion Include="SSH.NET" Version="2024.2.0" />
8793

8894

8995
<PackageVersion Include="ServiceStack.Text" Version="8.8.0" />

src/Core/ChmodCommand.cs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11

22
using System;
3-
using Docker.DotNet.Models;
43

54
namespace Squadron;
65

@@ -17,36 +16,27 @@ public static class ChmodCommand
1716
/// <param name="group"><see cref="Permission"/> for group</param>
1817
/// <param name="public"><see cref="Permission"/> for public</param>
1918
/// <param name="recursive">Apply recursive</param>
20-
public static ContainerExecCreateParameters Set(
19+
public static string[] Set(
2120
string pathInContainer,
2221
Permission owner = Permission.None,
2322
Permission group = Permission.None,
2423
Permission @public = Permission.None,
2524
bool recursive = false)
2625
{
2726
var cmd = $"chmod {(recursive ? "-R " : "")}{owner:d}{group:d}{@public:d} {pathInContainer}";
28-
29-
return new ContainerExecCreateParameters
30-
{
31-
AttachStderr = true,
32-
AttachStdin = false,
33-
AttachStdout = true,
34-
Cmd = cmd.Split(' '),
35-
Privileged = true,
36-
User = "root"
37-
};
27+
return cmd.Split(' ');
3828
}
3929

40-
public static ContainerExecCreateParameters ReadOnly(string pathInContainer, bool recursive = false)
30+
public static string[] ReadOnly(string pathInContainer, bool recursive = false)
4131
=> Set(pathInContainer, Permission.Read, Permission.Read, Permission.Read, recursive);
4232

43-
public static ContainerExecCreateParameters FullAccess(string pathInContainer, bool recursive = false)
33+
public static string[] FullAccess(string pathInContainer, bool recursive = false)
4434
=> Set(pathInContainer, Permission.FullAccess, Permission.FullAccess, Permission.FullAccess, recursive);
4535

46-
public static ContainerExecCreateParameters Execute(string pathInContainer, bool recursive = false)
36+
public static string[] Execute(string pathInContainer, bool recursive = false)
4737
=> Set(pathInContainer, Permission.Execute, Permission.Execute, Permission.Execute, recursive);
4838

49-
public static ContainerExecCreateParameters ReadWrite(string pathInContainer, bool recursive = false)
39+
public static string[] ReadWrite(string pathInContainer, bool recursive = false)
5040
=> Set(pathInContainer, Permission.ReadWrite, Permission.ReadWrite, Permission.ReadWrite, recursive);
5141

5242
[Flags]

src/Core/ContainerInstance.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.IO;
4-
using Docker.DotNet;
53

64
namespace Squadron;
75

8-
/// <summary>Respresents a created docker container</summary>
6+
/// <summary>Represents a created docker container</summary>
97
public class ContainerInstance : IDisposable
108
{
119
/// <summary>
@@ -67,10 +65,8 @@ public class ContainerInstance : IDisposable
6765
/// </value>
6866
public IList<string> Logs { get; set; } = new List<string>();
6967

70-
internal MultiplexedStream? LogStream { get; set; }
71-
7268
public void Dispose()
7369
{
74-
LogStream?.Dispose();
70+
// No longer need to dispose log stream - Testcontainers handles this
7571
}
7672
}

src/Core/ContainerResource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ protected virtual void SetupContainerResource()
6666

6767
DockerConfiguration dockerConfig = Settings.DockerConfigResolver();
6868

69-
Manager = new DockerContainerManager(Settings, dockerConfig);
69+
Manager = new TestcontainersDockerManager(Settings, dockerConfig);
7070
Initializer = new ContainerInitializer(Manager, Settings);
7171
}
7272

src/Core/Core.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@
1616
</ItemGroup>
1717

1818
<ItemGroup>
19-
<PackageReference Include="Docker.DotNet.Enhanced" />
19+
<PackageReference Include="Testcontainers" />
2020
<PackageReference Include="Newtonsoft.Json" />
21-
<PackageReference Include="Polly" />
22-
<PackageReference Include="SharpZipLib" />
2321
</ItemGroup>
2422

2523
</Project>

0 commit comments

Comments
 (0)