Пример #1
0
        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;
        }
Пример #2
0
 public ContainerResourceBuilder AddressMode(ContainerAddressMode mode)
 {
     _options.AddressMode = mode;
     return(this);
 }