diff --git a/Dockerfile b/Dockerfile index d65d88c..6f48d4b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,6 @@ RUN dotnet restore COPY . ./ RUN dotnet publish -c Release -o out -ENV ASPNETCORE_ENVIRONMENT=Staging -RUN ["dotnet","ef","database","update"] - # Build runtime image FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 WORKDIR /app diff --git a/DockerfileProduction b/DockerfileProduction index dc1555b..bf6bf7c 100644 --- a/DockerfileProduction +++ b/DockerfileProduction @@ -9,9 +9,6 @@ RUN dotnet restore COPY . ./ RUN dotnet publish -c Release -o out -ENV ASPNETCORE_ENVIRONMENT=Production -RUN ["dotnet","ef","database","update"] - # Build runtime image FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 WORKDIR /app diff --git a/Program.cs b/Program.cs index 4a7e6c0..f9df32b 100644 --- a/Program.cs +++ b/Program.cs @@ -32,7 +32,14 @@ namespace Test01 .AddJsonFile("appsettings.json", optional: false) .Build(); - var enableSeedApplicationDb = Convert.ToBoolean(config.GetSection("EnableSeedApplicationDb").Value); + var enableMigration = Environment.GetEnvironmentVariable("MIGRATION"); + + if (!string.IsNullOrEmpty(enableMigration)) + { + MigrationData.EnsureMigration(host.Services); + } + + var enableSeedApplicationDb = Convert.ToBoolean(config.GetSection("EnableSeedApplicationDb").Value); //SeedData.EnsureSeedData(host.Services, enableSeedApplicationDb); diff --git a/Seed/SeedData.cs b/Seed/SeedData.cs index 1d35bff..153628c 100644 --- a/Seed/SeedData.cs +++ b/Seed/SeedData.cs @@ -67,4 +67,21 @@ namespace TestAPI01.Seed return Path.Combine(currentDir, filePath); } } + + public class MigrationData + { + public static void EnsureMigration(IServiceProvider serviceProvider) + { + Console.WriteLine("Migrate database..."); + + using (var scope = serviceProvider.GetRequiredService().CreateScope()) + { + var context = scope.ServiceProvider.GetService(); + context.Database.Migrate(); + } + + Console.WriteLine("Done."); + Console.WriteLine(); + } + } } diff --git a/Startup.cs b/Startup.cs index cae0bdd..e59eaed 100644 --- a/Startup.cs +++ b/Startup.cs @@ -52,8 +52,17 @@ namespace Test01 // Test jenkins public void ConfigureServices(IServiceCollection services) { - string connectionString = Configuration.GetConnectionString("mainDBConnectionString"); - string idUrl = Configuration["IdentityServer:url"]; + var DB_HOST = Environment.GetEnvironmentVariable("DB_HOST"); + var DB_PORT = Environment.GetEnvironmentVariable("DB_PORT"); + var DB_NAME = Environment.GetEnvironmentVariable("DB_NAME"); + var DB_USERNAME = Environment.GetEnvironmentVariable("DB_USERNAME"); + var DB_PASSWORD = Environment.GetEnvironmentVariable("DB_PASSWORD"); + + var envConnectionString = $"Server={DB_HOST};Port={DB_PORT};Database={DB_NAME};User ID={DB_USERNAME};Password={DB_PASSWORD};"; + + string connectionString = !string.IsNullOrEmpty(DB_HOST) ? envConnectionString : Configuration.GetConnectionString("mainDBConnectionString"); + + string idUrl = Configuration["IdentityServer:url"]; string apiName = Configuration["IdentityServer:apiName"]; string appsite = Configuration["SiteInformation:appsite"];