Browse Source

Docker compose generator can save images

Kukks-patch-1
nicolas.dorier 5 years ago
parent
commit
2547a4bc0b
No known key found for this signature in database GPG Key ID: 6618763EF09186FE
  1. 1
      .gitignore
  2. 14
      docker-compose-generator/src/DockerComposeDefinition.cs

1
.gitignore

@ -302,3 +302,4 @@ Generated/traefik_logs/
Generated/error Generated/error
/Generated/save-images.sh

14
docker-compose-generator/src/DockerComposeDefinition.cs

@ -89,9 +89,12 @@ namespace DockerGenerator
output.Add("networks", new YamlMappingNode(networks)); output.Add("networks", new YamlMappingNode(networks));
var dockerImages = ((YamlMappingNode)output["services"]).Children.Select(kv => kv.Value["image"].ToString()).ToArray(); var dockerImages = ((YamlMappingNode)output["services"]).Children.Select(kv => kv.Value["image"].ToString()).ToList();
dockerImages.Add("btcpayserver/docker-compose-builder:1.23.2");
dockerImages.Add("btcpayserver/docker-compose-generator:latest");
StringBuilder pullImageSh = new StringBuilder(); StringBuilder pullImageSh = new StringBuilder();
pullImageSh.Append($"#!/bin/bash\n\n"); pullImageSh.Append($"#!/bin/bash\n\n");
pullImageSh.Append($"# This script is automatically generated via the docker-compose generator and can be use to pull all required docker images \n");
foreach (var image in dockerImages) foreach (var image in dockerImages)
{ {
pullImageSh.Append($"docker pull $BTCPAY_DOCKER_PULL_FLAGS \"{image}\"\n"); pullImageSh.Append($"docker pull $BTCPAY_DOCKER_PULL_FLAGS \"{image}\"\n");
@ -100,6 +103,15 @@ namespace DockerGenerator
File.WriteAllText(outputFile, pullImageSh.ToString()); File.WriteAllText(outputFile, pullImageSh.ToString());
Console.WriteLine($"Generated {outputFile}"); Console.WriteLine($"Generated {outputFile}");
StringBuilder saveImages = new StringBuilder();
saveImages.Append($"#!/bin/bash\n\n");
saveImages.Append($"# This script is automatically generated via the docker-compose generator and can be use to save the docker images in an archive \n");
saveImages.Append($"# ./save-images.sh output.tar \n");
saveImages.Append($"docker save -o \"$1\" \\\n {string.Join(" \\\n", dockerImages.Select(o => $"\"{o}\""))}");
outputFile = GetFilePath("save-images.sh");
File.WriteAllText(outputFile, saveImages.ToString());
Console.WriteLine($"Generated {outputFile}");
var result = serializer.Serialize(output); var result = serializer.Serialize(output);
outputFile = GetFilePath(); outputFile = GetFilePath();
File.WriteAllText(outputFile, result.Replace("''", "")); File.WriteAllText(outputFile, result.Replace("''", ""));

Loading…
Cancel
Save