private void Run(DockerComposition composition, string name, string output) { var fragmentLocation = Environment.GetEnvironmentVariable("INSIDE_CONTAINER") == "1" ? "app" : "docker-compose-generator"; fragmentLocation = FindRoot(fragmentLocation); fragmentLocation = Path.GetFullPath(Path.Combine(fragmentLocation, "docker-fragments")); var fragments = new HashSet <string>(); switch (composition.SelectedProxy) { case "nginx": fragments.Add("nginx"); fragments.Add("btcpayserver-nginx"); break; case "traefik": fragments.Add("traefik"); fragments.Add("traefik-labels"); break; case "no-reverseproxy": case "none": case "": fragments.Add("btcpayserver-noreverseproxy"); break; } fragments.Add("btcpayserver"); fragments.Add("nbxplorer"); fragments.Add("postgres"); foreach (var crypto in CryptoDefinition.GetDefinitions()) { if (!composition.SelectedCryptos.Contains(crypto.Crypto)) { continue; } fragments.Add(crypto.CryptoFragment); if (composition.SelectedLN == "clightning" && crypto.CLightningFragment != null) { fragments.Add(crypto.CLightningFragment); } if (composition.SelectedLN == "lnd" && crypto.LNDFragment != null) { fragments.Add(crypto.LNDFragment); } } foreach (var fragment in composition.AdditionalFragments) { fragments.Add(fragment.Trim()); } fragments = fragments.Where(s => !composition.ExcludeFragments.Contains(s)).ToHashSet(); var def = new DockerComposeDefinition(name, fragments.ToList()); def.FragmentLocation = fragmentLocation; def.BuildOutputDirectory = output; def.Build(); }
private void Run() { var fragmentLocation = FindLocation("docker-fragments"); var productionLocation = FindLocation("Production"); var testLocation = FindLocation("Production-NoReverseProxy"); HashSet <string> processed = new HashSet <string>(); foreach (var permutation in ItemCombinations(new[] { "btc", "ltc", "clightning" }.ToList())) { if (permutation.Count == 1 && permutation.First() == "clightning") { continue; } permutation.Sort(); if (permutation.Remove("clightning")) { permutation.Add("clightning"); // ensure clightning at the end } string id = string.Join('-', permutation); if (!processed.Add(id)) { continue; } var fragments = new List <string>(); fragments.Add("nginx"); fragments.Add("btcpayserver"); if (permutation.Contains("ltc")) { fragments.Add("litecoin"); if (permutation.Contains("clightning")) { fragments.Add("litecoin-clightning"); } } if (permutation.Contains("btc")) { fragments.Add("bitcoin"); if (permutation.Contains("clightning")) { fragments.Add("bitcoin-clightning"); } } var def = new DockerComposeDefinition(id, fragments); def.FragmentLocation = fragmentLocation; def.BuildOutputDirectory = productionLocation; def.Build(); def.Fragments.Remove("nginx"); def.Fragments.Add("btcpayserver-noreverseproxy"); def.BuildOutputDirectory = testLocation; def.Build(); } }
private void Run(DockerComposition composition, string name, string output) { var fragmentLocation = Environment.GetEnvironmentVariable("INSIDE_CONTAINER") == "1" ? "app" : "docker-compose-generator"; fragmentLocation = FindRoot(fragmentLocation); fragmentLocation = Path.GetFullPath(Path.Combine(fragmentLocation, "docker-fragments")); var fragments = new List <string>(); if (composition.SelectedProxy == "nginx") { fragments.Add("nginx"); } else { fragments.Add("btcpayserver-noreverseproxy"); } fragments.Add("btcpayserver"); foreach (var crypto in CryptoDefinition.GetDefinitions()) { if (!composition.SelectedCryptos.Contains(crypto.Crypto)) { continue; } fragments.Add(crypto.CryptoFragment); if (composition.SelectedLN == "clightning" && crypto.CLightningFragment != null) { fragments.Add(crypto.CLightningFragment); } if (composition.SelectedLN == "lnd" && crypto.LNDFragment != null) { fragments.Add(crypto.LNDFragment); } } foreach (var fragment in composition.AdditionalFragments) { fragments.Add(fragment.Trim()); } var def = new DockerComposeDefinition(name, fragments); def.FragmentLocation = fragmentLocation; def.BuildOutputDirectory = output; def.Build(); }
private void Run(DockerComposition composition, string name, string output) { var root = Environment.GetEnvironmentVariable("INSIDE_CONTAINER") == "1" ? "app" : "docker-compose-generator"; root = FindRoot(root); var fragmentLocation = Path.GetFullPath(Path.Combine(root, "docker-fragments")); var cryptoDefinitionsLocation = Path.GetFullPath(Path.Combine(root, "crypto-definitions.json")); var cryptoDefinitions = JsonSerializer.Deserialize <CryptoDefinition[]>(File.ReadAllText(cryptoDefinitionsLocation)); var fragments = new HashSet <string>(); switch (composition.SelectedProxy) { case "nginx": fragments.Add("nginx"); break; case "traefik": fragments.Add("traefik"); break; case "no-reverseproxy": case "none": case "": fragments.Add("btcpayserver-noreverseproxy"); break; } fragments.Add("btcpayserver"); foreach (var crypto in cryptoDefinitions) { if (!composition.SelectedCryptos.Contains(crypto.Crypto)) { continue; } fragments.Add(crypto.CryptoFragment); if (composition.SelectedLN == "clightning" && crypto.CLightningFragment != null) { fragments.Add(crypto.CLightningFragment); } if (composition.SelectedLN == "lnd" && crypto.LNDFragment != null) { fragments.Add(crypto.LNDFragment); } if (composition.SelectedLN == "eclair" && crypto.EclairFragment != null) { fragments.Add(crypto.EclairFragment); } } foreach (var fragment in composition.AdditionalFragments) { fragments.Add(fragment); } var def = new DockerComposeDefinition(name, fragments.Select(f => new FragmentName(f)).ToHashSet()) { ExcludeFragments = composition.ExcludeFragments.Select(f => new FragmentName(f)).ToHashSet() }; def.FragmentLocation = fragmentLocation; def.BuildOutputDirectory = output; def.Build(); }