Exemplo n.º 1
0
        public override void DoExecute(IStartProjectContext input)
        {
            var hostsFileEntries = new List <HostsFileEntryBase>();

            foreach (var service in input.DockerComposeFileConfig.ServiceDefinitions)
            {
                if (!service.Labels.ContainsKey("traefik.enable"))
                {
                    continue;
                }

                var host = service
                           .Labels
                           .Single(l => l.Key.EndsWith("rule"))
                           .Value;

                var hostName = GetHostNameFromEnvironmentalVariables(host, input);

                var hostsFileMapEntry = new HostsFileMapEntry(
                    IPAddress.Loopback,
                    hostName,
                    $"{service.Name} Host"
                    );
                hostsFileEntries.Add(hostsFileMapEntry);
            }

            _hostsFileService.AddHostsFileEntry(hostsFileEntries);
        }
        public override void DoExecute(IStartProjectContext input)
        {
            var traefikCertsPath = Path.Combine(input.WorkingPath, "traefik", "certs");

            if (!Directory.Exists(traefikCertsPath))
            {
                Directory.CreateDirectory(traefikCertsPath);
            }

            var traefikConfig = new Config();

            foreach (var service in input.DockerComposeFileConfig.ServiceDefinitions)
            {
                if (!service.Labels.ContainsKey("traefik.enable"))
                {
                    continue;
                }
                var host = service
                           .Labels
                           .Single(l => l.Key.EndsWith("rule"))
                           .Value;

                var hostName = GetHostNameFromEnvironmentalVariables(host, input);

                var certificate = CreateCert(hostName, traefikCertsPath);
                traefikConfig.Tls.Certificates.Add(certificate);
            }

            var traefikConfigPath = Path.Combine(input.WorkingPath, "traefik", "config", "dynamic");

            if (!Directory.Exists(traefikConfigPath))
            {
                Directory.CreateDirectory(traefikConfigPath);
            }

            var serializer = new SerializerBuilder()
                             .WithNamingConvention(CamelCaseNamingConvention.Instance)
                             .Build();

            var traefikConfigYaml = serializer.Serialize(traefikConfig);

            File.WriteAllText(
                Path.Combine(traefikConfigPath, "certs_config.yaml"),
                traefikConfigYaml);
        }