private async Task ResolveHostAddressAsync() { ContainerInspectResponse inspectResponse = await _client .Containers .InspectContainerAsync(Instance.Id); ContainerAddressMode addressMode = GetAddressMode(); if (addressMode == ContainerAddressMode.Port) { Instance.Address = "localhost"; string containerPort = $"{_settings.InternalPort}/tcp"; if (!inspectResponse.NetworkSettings.Ports.ContainsKey(containerPort)) { throw new Exception($"Failed to resolve host port for {containerPort}"); } PortBinding binding = inspectResponse .NetworkSettings .Ports[containerPort] .FirstOrDefault(); if (binding == null || string.IsNullOrEmpty(binding.HostPort)) { throw new Exception($"The resolved port binding is empty"); } Instance.HostPort = int.Parse(binding.HostPort); } else { Instance.Address = inspectResponse.NetworkSettings.IPAddress; Instance.HostPort = _settings.InternalPort; } Instance.IsRunning = inspectResponse.State.Running; }
public ContainerResourceBuilder AddressMode(ContainerAddressMode mode) { _options.AddressMode = mode; return(this); }