diff --git a/Dockerfile b/Dockerfile index 61104bf..030b496 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,4 +10,12 @@ RUN dotnet publish -c Release -o /app FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS final WORKDIR /app COPY --from=build /app . + +## Intruduce all the ENV vars +ENV DATABASE_HOST null +ENV DATABASE_PORT 5432 +ENV DATABASE_NAME null +ENV DATABASE_USER null +ENV DATABASE_PASSWORD null + ENTRYPOINT ["dotnet", "ScrumTaskboard.dll"] \ No newline at end of file diff --git a/ScrumTaskboard/Startup.cs b/ScrumTaskboard/Startup.cs index 1628436..6a3c9c7 100644 --- a/ScrumTaskboard/Startup.cs +++ b/ScrumTaskboard/Startup.cs @@ -26,13 +26,13 @@ namespace ScrumTaskboard // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) - { + { services.AddCors(o => o.AddPolicy("AllowAll", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); - })); + })); services.AddMvc().AddJsonOptions(o => { o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); @@ -40,7 +40,7 @@ namespace ScrumTaskboard }); services.AddScoped(serviceProvider => new TaskContext( new DbContextOptionsBuilder() - .UseNpgsql("Host=nig.gl; Port=8543; Username=scrum; Database=taskboard; Password=c6gXud7YvBWp2sgxSgy4wRN") + .UseNpgsql(GetConnectionString()) .Options)); services.AddControllers(); services.AddOpenApiDocument( @@ -84,5 +84,36 @@ namespace ScrumTaskboard app.UseOpenApi(); app.UseSwaggerUi3(); } + + /// + /// Creates DB Connection String based on ENV vars and default vars. + /// + /// + public string GetConnectionString() + { + string dbHost; + string dbPort; + string dbName; + string dbUser; + string dbPassword; + + dbHost = Environment.GetEnvironmentVariable("DATABASE_HOST"); + dbPort = Environment.GetEnvironmentVariable("DATABASE_PORT"); + dbName = Environment.GetEnvironmentVariable("DATABASE_NAME"); + dbUser = Environment.GetEnvironmentVariable("DATABASE_USER"); + dbPassword = Environment.GetEnvironmentVariable("DATABASE_PASSWORD"); + + if(dbHost == null || dbPort == null || dbName == null || dbUser == null || dbPassword == null) + { + dbHost = "nig.gl"; + dbPort = "8543"; + dbName = "taskboard"; + dbUser = "scrum"; + dbPassword = "c6gXud7YvBWp2sgxSgy4wRN"; + } + + + return $"Host={dbHost}; Port={dbPort}; Username={dbUser}; Database={dbName}; Password={dbPassword}"; + } } } diff --git a/ScrumTaskboard/TaskContext.cs b/ScrumTaskboard/TaskContext.cs index 5ce3d46..1bf0247 100644 --- a/ScrumTaskboard/TaskContext.cs +++ b/ScrumTaskboard/TaskContext.cs @@ -15,12 +15,7 @@ namespace ScrumTaskboard public DbSet Users { get; set; } public TaskContext() { } - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - optionsBuilder.UseNpgsql("Host=nig.gl; Port=8543; Username=scrum; Database=taskboard; Password=c6gXud7YvBWp2sgxSgy4wRN"); - } - + public TaskContext(DbContextOptions options) : base(options) { } } diff --git a/docker-compose.yml b/docker-compose.yml index 7cbe416..2e9f9e3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,6 +22,11 @@ services: - default ports: - "5001:80" + environment: + DATABASE_HOST: db + DATABASE_NAME: taskboard + DATABASE_USER: scrum + DATABASE_PASSWORD: c6gXud7YvBWp2sgxSgy4wRN volumes: db-data: \ No newline at end of file