private void InitializeDatabase() { var providerName = ConfigurationManager.AppSettings["Database.Provider"]; var connectionString = ConfigurationManager.AppSettings["Database.ConnectionString"]; var owner = ConfigurationManager.AppSettings["Database.Owner"]; IDatabaseProvider databaseProvider = new PostgreDatabaseProvider(); this.For <IDatabaseProvider>().AddInstances(x => { var providers = Reflection.GetInstancesOfImplementingTypes <IDatabaseProvider>(this.GetAssembly()); foreach (var provider in providers) { if (provider.Name == providerName) { databaseProvider = provider; } x.Type(provider.GetType()).Named(provider.Name); } }); this.For <IDatabaseProvider>().Use(databaseProvider); Database.Initialize(databaseProvider, connectionString, owner); }
public async Task <bool> InstantiateDatabaseContainer(PostgreDatabaseProvider database, CancellationToken cancellationToken) { logger.Information("---- Starting Deploy Database Container ----"); await DownloadImage("postgres", "latest", cancellationToken); var volumes = new Dictionary <string, EmptyStruct>(); volumes.Add($"{database.Storage}:/var/lib/postgresql/data", new EmptyStruct()); var ports = new Dictionary <string, EmptyStruct>(); ports.Add("5432/tcp", new EmptyStruct()); var createParameters = new CreateContainerParameters() { Image = "postgres:latest", Name = DbContainerName, Hostname = DbContainerName, Env = new List <string>() { $"POSTGRES_PASSWORD={database.Password}", $"POSTGRES_USER={database.Username}", $"POSTGRES_DB={database.DbName}" }, Volumes = volumes, ExposedPorts = ports, HostConfig = new HostConfig() { NetworkMode = NetworkName, RestartPolicy = new RestartPolicy() { Name = RestartPolicyKind.Always }, PortBindings = new Dictionary <string, IList <PortBinding> > { { $"5432/tcp", new List <PortBinding> { new PortBinding { HostPort = $"5432" } } } } } }; return(await DeployAndStartAsync(DbContainerName, createParameters, cancellationToken)); }
public async Task <bool> InstantiateDatabaseContainer(PostgreDatabaseProvider database, CancellationToken cancellationToken) { Console.WriteLine("---- Starting Deploy Database Container ----"); await DownloadImage("postgres", "latest", cancellationToken); var volumes = new Dictionary <string, EmptyStruct>(); volumes.Add($"{database.Storage}:/var/lib/postgresql/data", new EmptyStruct()); var createParameters = new CreateContainerParameters() { Image = "postgres:latest", Name = DbContainerName, Env = new List <string>() { $"POSTGRES_PASSWORD={database.Password}" }, Volumes = volumes }; return(await DeployAndStartAsync(DbContainerName, createParameters, cancellationToken)); }