in src/Dimmy.Sitecore.Plugin/Pipeline/StartProject/Nodes/CreateContainerCerts.cs [18:53]
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);
}