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); }