Example #1
0
        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();
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }