Esempio n. 1
0
        public DockerContainer Build()
        {
            var container = _client.Containers.ListContainersAsync(new ContainersListParameters {
                All = true
            }).ConfigureAwait(false).GetAwaiter().GetResult()
                            .FirstOrDefault(x => x.Names.Any(n => n.Equals("/" + Name, StringComparison.OrdinalIgnoreCase)));

            if (container != null && !RemovePreviousContainer)
            {
                return(new DockerContainer(container.ID, DelayAfterStartup));
            }

            if (container != null && RemovePreviousContainer)
            {
                var oldContainer = new DockerContainer(container.ID, DelayAfterStartup);
                oldContainer.Stop();
                oldContainer.Remove();
            }

            _client.Images.CreateImageAsync(new ImagesCreateParameters {
                FromImage = FromImage, Tag = Tag
            }, null, new Progress <JSONMessage>()).ConfigureAwait(false).GetAwaiter().GetResult();

            var newContainer = _client.Containers.CreateContainerAsync(new CreateContainerParameters
            {
                Image        = $"{FromImage}:{Tag ?? "latest"}",
                Name         = Name,
                Env          = Env,
                ExposedPorts = new Dictionary <string, EmptyStruct> {
                    { ExposedPort, new EmptyStruct() }
                },
                HostConfig = new HostConfig
                {
                    PortBindings = new Dictionary <string, IList <PortBinding> >
                    {
                        { ExposedPort, new List <PortBinding> {
                              new PortBinding {
                                  HostIP = "localhost", HostPort = HostPort
                              }
                          } }
                    }
                }
            }).ConfigureAwait(false).GetAwaiter().GetResult();

            return(new DockerContainer(newContainer.ID, DelayAfterStartup));
        }
Esempio n. 2
0
 public bool Stop() => _container.Stop();