Example #1
0
        internal async static Task DeployAsync(
            this IDockerContainerManager manager,
            ContainerResourceSettings settings,
            Stream source,
            string databaseConnection,
            string databaseName)
        {
            using (var dacPackage = Microsoft.SqlServer.Dac.DacPackage.Load(source))
            {
                var deployService   = new DacServices(databaseConnection);
                var deployScriptRaw = deployService.GenerateDeployScript(dacPackage, databaseName, DacpacOptions.Deploy);
                var deployScript    = new DeployScript(deployScriptRaw);

                deployScript.SetVariable("DefaultDataPath", "/tmp/");
                deployScript.SetVariable("DefaultLogPath", "/tmp/");

                var sqlScript = deployScript.Generate();

                FileInfo scriptFile  = CreateSqlFile(sqlScript);
                var      copyContext = new CopyContext(scriptFile.FullName, $"/tmp/{scriptFile.Name}");

                await manager.CopyToContainer(copyContext);

                await manager.InvokeCommandAsync(SqlCommand.ExecuteFile(copyContext.Destination, settings));

                File.Delete(scriptFile.FullName);
            }
        }
 /// <summary>Initializes a new instance of the <see cref="ContainerInitializer"/> class.</summary>
 /// <param name="manager">The manager.</param>
 /// <param name="settings">The settings.</param>
 public ContainerInitializer(
     IDockerContainerManager manager,
     ContainerResourceSettings settings)
 {
     _manager  = manager;
     _settings = settings;
 }
Example #3
0
        /// <summary>
        /// Initializes the resources
        /// </summary>
        public async virtual Task InitializeAsync()
        {
            ResourceOptions = new TOptions();
            var builder = ContainerResourceBuilder.New();

            ResourceOptions.Configure(builder);
            Settings = builder.Build();

            SetComposeVariables();
            OnSettingsBuilded(Settings);
            ValidateSettings(Settings);

            DockerConfiguration dockerConfig = Settings.DockerConfigResolver();

            Manager     = new DockerContainerManager(Settings, dockerConfig);
            Initializer = new ContainerInitializer(Manager, Settings);
            await Manager.CreateAndStartContainerAsync();
        }