public async Task InitializeAsync() { try { var testcontainersBuilder = new TestcontainersBuilder <MySql56Testcontainer>() .WithDatabase(new MySql56TestcontainerConfiguration { Database = "integrationdefaultdb", Username = "******", Password = this.Password, }); mySqlTestcontainer = testcontainersBuilder.Build(); await mySqlTestcontainer.StartAsync(); var databaseMigrationsImageBuilder = new ImageFromDockerfileBuilder() .WithName("template-integration-db-migrations") .WithDockerfile("Dockerfile") .WithDockerfileDirectory("../../../../../db/") .WithDeleteIfExists(true); this.databaseMigrationsImage = await databaseMigrationsImageBuilder.Build(); var connectionString = mySqlTestcontainer.ConnectionString; connectionString = connectionString.Replace("localhost", "host.docker.internal"); var databaseMigrationsContainerBuilder = new TestcontainersBuilder <MigrationsTestcontainer>() .WithImage(databaseMigrationsImage) .WithCommand($"-cs {connectionString}") .WithWaitStrategy(Wait.ForUnixContainer()); this.migrationsTestcontainer = databaseMigrationsContainerBuilder.Build(); try { await migrationsTestcontainer.StartAsync(); var exitCode = await migrationsTestcontainer.GetExitCode(); if (exitCode > 0) { throw new Exception("Database migrations failed"); } } catch (Exception ex) { throw ex; } this.ConnectionStringProvider = new ConnectionStringProvider(new DatabaseOptions { Server = this.Hostname, Port = this.Port, Username = "******", Password = this.Password, }); } catch (Exception e) { throw; } }