in internal/components/setup/compose.go [246:275]
func buildComposeServices(e2eConfig *config.E2EConfig, compose *testcontainers.LocalDockerCompose) ([]*ComposeService, error) {
waitTimeout := e2eConfig.Setup.GetTimeout()
services := make([]*ComposeService, 0)
for service, content := range compose.Services {
serviceConfig := content.(map[any]any)
ports := serviceConfig["ports"]
serviceContext := &ComposeService{Name: service}
services = append(services, serviceContext)
if ports == nil {
continue
}
portList := ports.([]any)
for inx := range portList {
exportPort, err := getExpectPort(portList[inx])
if err != nil {
return nil, err
}
strategy := &hostPortCachedStrategy{
expectPort: exportPort,
HostPortStrategy: *wait.NewHostPortStrategy(nat.Port(fmt.Sprintf("%d/tcp", exportPort))).WithStartupTimeout(waitTimeout),
}
// temporary don't use testcontainers-go framework wait strategy until fix docker-in-docker bug
// compose.WithExposedService(service, exportPort, strategy)
serviceContext.waitStrategies = append(serviceContext.waitStrategies, strategy)
}
}
return services, nil
}