Multiple configuration modifications
Added Enviroment variable support Addes baseUrl variable for live services Included default env variables in docker-compose.yml Updated sql and nodejs versions
This commit is contained in:
parent
85320d3cf3
commit
5b42ce9f43
@ -1,14 +1,13 @@
|
|||||||
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
|
||||||
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
|
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
EXPOSE 443
|
EXPOSE 443
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y nodejs
|
RUN apt-get install -y nodejs
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
|
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y nodejs
|
RUN apt-get install -y nodejs
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
|
||||||
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
|
|
||||||
WORKDIR /app
|
|
||||||
EXPOSE 80
|
|
||||||
EXPOSE 443
|
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
|
||||||
RUN apt-get install -y nodejs
|
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
|
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
|
||||||
RUN apt-get install -y nodejs
|
|
||||||
WORKDIR /src
|
|
||||||
COPY ["Birdmap.API/Birdmap.API.csproj", "Birdmap.API/"]
|
|
||||||
COPY ["Birdmap.BLL/Birdmap.BLL.csproj", "Birdmap.BLL/"]
|
|
||||||
COPY ["Birdmap.Common/Birdmap.Common.csproj", "Birdmap.Common/"]
|
|
||||||
COPY ["Birdmap.DAL/Birdmap.DAL.csproj", "Birdmap.DAL/"]
|
|
||||||
RUN dotnet restore "Birdmap.API/Birdmap.API.csproj"
|
|
||||||
COPY . .
|
|
||||||
WORKDIR "/src/Birdmap.API"
|
|
||||||
RUN dotnet build "Birdmap.API.csproj" -c Release -o /app/build
|
|
||||||
|
|
||||||
FROM build AS publish
|
|
||||||
RUN dotnet publish "Birdmap.API.csproj" -c Release -o /app/publish
|
|
||||||
|
|
||||||
FROM base AS final
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=publish /app/publish .
|
|
||||||
ENTRYPOINT ["dotnet", "Birdmap.API.dll"]
|
|
@ -1,30 +0,0 @@
|
|||||||
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
|
||||||
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
|
|
||||||
WORKDIR /app
|
|
||||||
EXPOSE 80
|
|
||||||
EXPOSE 443
|
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
|
||||||
RUN apt-get update
|
|
||||||
RUN apt-get install -y nodejs
|
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
|
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
|
||||||
RUN apt-get update
|
|
||||||
RUN apt-get install -y nodejs
|
|
||||||
WORKDIR /src
|
|
||||||
COPY ["Birdmap.API/Birdmap.API.csproj", "Birdmap.API/"]
|
|
||||||
COPY ["Birdmap.BLL/Birdmap.BLL.csproj", "Birdmap.BLL/"]
|
|
||||||
COPY ["Birdmap.Common/Birdmap.Common.csproj", "Birdmap.Common/"]
|
|
||||||
COPY ["Birdmap.DAL/Birdmap.DAL.csproj", "Birdmap.DAL/"]
|
|
||||||
RUN dotnet restore "Birdmap.API/Birdmap.API.csproj"
|
|
||||||
COPY . .
|
|
||||||
WORKDIR "/src/Birdmap.API"
|
|
||||||
RUN dotnet build "Birdmap.API.csproj" -c Release -o /app/build
|
|
||||||
|
|
||||||
FROM build AS publish
|
|
||||||
RUN dotnet publish "Birdmap.API.csproj" -c Release -o /app/publish
|
|
||||||
|
|
||||||
FROM base AS final
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=publish /app/publish .
|
|
||||||
ENTRYPOINT ["dotnet", "Birdmap.API.dll"]
|
|
@ -1,5 +1,6 @@
|
|||||||
using Birdmap.DAL;
|
using Birdmap.DAL;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
@ -20,12 +21,6 @@ namespace Birdmap.API
|
|||||||
logger.Debug("Building host...");
|
logger.Debug("Building host...");
|
||||||
var host = CreateHostBuilder(args).Build();
|
var host = CreateHostBuilder(args).Build();
|
||||||
|
|
||||||
using (var scope = host.Services.CreateScope())
|
|
||||||
{
|
|
||||||
var db = scope.ServiceProvider.GetRequiredService<BirdmapContext>();
|
|
||||||
db.Database.EnsureCreated();
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.Debug("Seeding database...");
|
logger.Debug("Seeding database...");
|
||||||
SeedDatabase(host);
|
SeedDatabase(host);
|
||||||
|
|
||||||
@ -45,6 +40,10 @@ namespace Birdmap.API
|
|||||||
|
|
||||||
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||||||
Host.CreateDefaultBuilder(args)
|
Host.CreateDefaultBuilder(args)
|
||||||
|
.ConfigureAppConfiguration((hostingContext, config) =>
|
||||||
|
{
|
||||||
|
config.AddEnvironmentVariables(prefix: "Birdmap_");
|
||||||
|
})
|
||||||
.ConfigureWebHostDefaults(webBuilder =>
|
.ConfigureWebHostDefaults(webBuilder =>
|
||||||
{
|
{
|
||||||
webBuilder.UseStartup<Startup>();
|
webBuilder.UseStartup<Startup>();
|
||||||
@ -59,8 +58,8 @@ namespace Birdmap.API
|
|||||||
private static void SeedDatabase(IHost host)
|
private static void SeedDatabase(IHost host)
|
||||||
{
|
{
|
||||||
using var scope = host.Services.CreateScope();
|
using var scope = host.Services.CreateScope();
|
||||||
var dbInitializer = scope.ServiceProvider.GetRequiredService<DbInitializer>();
|
|
||||||
|
|
||||||
|
var dbInitializer = scope.ServiceProvider.GetRequiredService<DbInitializer>();
|
||||||
dbInitializer.Initialize();
|
dbInitializer.Initialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
"iisSettings": {
|
"iisSettings": {
|
||||||
"windowsAuthentication": false,
|
"windowsAuthentication": false,
|
||||||
"anonymousAuthentication": true,
|
"anonymousAuthentication": true,
|
||||||
|
"iis": {
|
||||||
|
"applicationUrl": "http://localhost/Birdmap.API",
|
||||||
|
"sslPort": 0
|
||||||
|
},
|
||||||
"iisExpress": {
|
"iisExpress": {
|
||||||
"applicationUrl": "http://localhost:63288",
|
"applicationUrl": "http://localhost:63288",
|
||||||
"sslPort": 44331
|
"sslPort": 44331
|
||||||
@ -12,6 +16,7 @@
|
|||||||
"commandName": "IISExpress",
|
"commandName": "IISExpress",
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
|
"Birdmap_LocalDbConnectionString": "Data Source=DESKTOP-3600;Initial Catalog=birdmap2;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
"Secret": "7vj.3KW.hYE!}4u6",
|
"Secret": "7vj.3KW.hYE!}4u6",
|
||||||
// "LocalDbConnectionString": "Data Source=DESKTOP-3600\\SQLEXPRESS;Initial Catalog=birdmap;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
|
// "LocalDbConnectionString": "Data Source=DESKTOP-3600\\SQLEXPRESS;Initial Catalog=birdmap;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
|
||||||
//"LocalDbConnectionString": "Data Source=DESKTOP-3600;Initial Catalog=birdmap;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
|
//"LocalDbConnectionString": "Data Source=DESKTOP-3600;Initial Catalog=birdmap;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
|
||||||
"LocalDbConnectionString": "Data Source=db;Initial Catalog=master;User=sa;Password=asdfjkl-123",
|
"LocalDbConnectionString": "Data Source=db;Initial Catalog=birdmap;User=sa;Password=RPSsql12345",
|
||||||
"Defaults": {
|
"Defaults": {
|
||||||
"Services": {
|
"Services": {
|
||||||
"Local Database": "https://localhost:44331/health",
|
"Local Database": "https://localhost:44331/health",
|
||||||
@ -30,6 +30,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"UseDummyServices": true,
|
"UseDummyServices": true,
|
||||||
|
"ServicesBaseUrl": "https://birb.k8s.kmlabz.com/",
|
||||||
"Mqtt": {
|
"Mqtt": {
|
||||||
"BrokerHostSettings": {
|
"BrokerHostSettings": {
|
||||||
"Host": "localhost",
|
"Host": "localhost",
|
||||||
|
@ -23,8 +23,9 @@ namespace Birdmap.BLL.Services
|
|||||||
private System.Net.Http.HttpClient _httpClient;
|
private System.Net.Http.HttpClient _httpClient;
|
||||||
private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings;
|
private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings;
|
||||||
|
|
||||||
public LiveDummyService(System.Net.Http.HttpClient httpClient)
|
public LiveDummyService(string baseUrl, System.Net.Http.HttpClient httpClient)
|
||||||
{
|
{
|
||||||
|
_baseUrl = baseUrl;
|
||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(CreateSerializerSettings);
|
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(CreateSerializerSettings);
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,9 @@ namespace Birdmap.BLL.Services
|
|||||||
private System.Net.Http.HttpClient _httpClient;
|
private System.Net.Http.HttpClient _httpClient;
|
||||||
private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings;
|
private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings;
|
||||||
|
|
||||||
public LiveInputService(System.Net.Http.HttpClient httpClient)
|
public LiveInputService(string baseUrl, System.Net.Http.HttpClient httpClient)
|
||||||
{
|
{
|
||||||
|
_baseUrl = baseUrl;
|
||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(CreateSerializerSettings);
|
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(CreateSerializerSettings);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using Birdmap.BLL.Services;
|
using Birdmap.BLL.Services;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using System.Net.Http;
|
||||||
|
|
||||||
namespace Birdmap.BLL
|
namespace Birdmap.BLL
|
||||||
{
|
{
|
||||||
@ -20,8 +21,20 @@ namespace Birdmap.BLL
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
services.AddTransient<IInputService, LiveInputService>();
|
var baseUrl = configuration.GetValue<string>("ServicesBaseUrl");
|
||||||
services.AddTransient<IDeviceService, LiveDummyService>();
|
|
||||||
|
services.AddTransient<IInputService, LiveInputService>(serviceProvider =>
|
||||||
|
{
|
||||||
|
var httpClient = serviceProvider.GetService<HttpClient>();
|
||||||
|
var service = new LiveInputService(baseUrl, httpClient);
|
||||||
|
return service;
|
||||||
|
});
|
||||||
|
services.AddTransient<IDeviceService, LiveDummyService>(serviceProvider =>
|
||||||
|
{
|
||||||
|
var httpClient = serviceProvider.GetService<HttpClient>();
|
||||||
|
var service = new LiveDummyService(baseUrl, httpClient);
|
||||||
|
return service;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
|
@ -22,10 +22,17 @@ namespace Birdmap.DAL
|
|||||||
|
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
|
EnsureCreated();
|
||||||
AddDefaultUsers();
|
AddDefaultUsers();
|
||||||
AddDefaultServices();
|
AddDefaultServices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void EnsureCreated()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Ensuring database is created...");
|
||||||
|
_context.Database.EnsureCreated();
|
||||||
|
}
|
||||||
|
|
||||||
private void AddDefaultServices()
|
private void AddDefaultServices()
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Removing previously added default services...");
|
_logger.LogInformation("Removing previously added default services...");
|
||||||
|
22
Dockerfile
22
Dockerfile
@ -1,22 +0,0 @@
|
|||||||
# https://hub.docker.com/_/microsoft-dotnet
|
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
|
|
||||||
WORKDIR /app
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
RUN curl --silent --location https://deb.nodesource.com/setup_10.x | bash -
|
|
||||||
RUN apt-get install --yes nodejs
|
|
||||||
|
|
||||||
# copy csproj and restore as distinct layers
|
|
||||||
WORKDIR /src
|
|
||||||
COPY . .
|
|
||||||
RUN dotnet restore "Birdmap.API/Birdmap.API.csproj"
|
|
||||||
|
|
||||||
# copy everything else and build app
|
|
||||||
RUN dotnet publish "Birdmap.API/Birdmap.API.csproj" -c Release -o /app
|
|
||||||
|
|
||||||
|
|
||||||
# final stage/image
|
|
||||||
FROM mcr.microsoft.com/dotnet/aspnet:5.0
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=build /app .
|
|
||||||
ENTRYPOINT ["dotnet", "Birdmap.API.dll"]
|
|
@ -2,20 +2,36 @@ version: '3.4'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
db:
|
db:
|
||||||
image: "mcr.microsoft.com/mssql/server:2017-latest"
|
image: "mcr.microsoft.com/mssql/server:2019-latest"
|
||||||
environment:
|
environment:
|
||||||
- ACCEPT_EULA=Y
|
- ACCEPT_EULA=Y
|
||||||
- SA_PASSWORD=asdfjkl-123
|
- SA_PASSWORD=RPSsql12345
|
||||||
|
|
||||||
birdmap.api:
|
birdmap.api:
|
||||||
image: ${DOCKER_REGISTRY-}birdmapapi
|
image: ${DOCKER_REGISTRY-}birdmapapi
|
||||||
ports:
|
ports:
|
||||||
- "8000:80"
|
- "5000:5000"
|
||||||
- "5001:443"
|
- "5001:5001"
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Birdmap.API/Dockerfile
|
dockerfile: Birdmap.API/Dockerfile
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
environment:
|
environment:
|
||||||
- ASPNETCORE_URLS=https://+:443;http://+:80
|
- ASPNETCORE_URLS=https://localhost:5001;http://localhost:5000
|
||||||
|
- Birdmap_LocalDbConnectionString=Data Source=db;Initial Catalog=birdmap;User=sa;Password=RPSsql12345
|
||||||
|
- Birdmap_Defaults__Users__0__Name=admin
|
||||||
|
- Birdmap_Defaults__Users__0__Password=pass
|
||||||
|
- Birdmap_Defaults__Users__0__Role=Admin
|
||||||
|
- Birdmap_Defaults__Users__1__Name=user
|
||||||
|
- Birdmap_Defaults__Users__1__Password=pass
|
||||||
|
- Birdmap_Defaults__Users__1__Role=User
|
||||||
|
- Birdmap_Defaults__Services__Local-Database=https://localhost/health
|
||||||
|
- Birdmap_UseDummyServices=true
|
||||||
|
- Birdmap_ServicesBaseUrl=https://birb.k8s.kmlabz.com/
|
||||||
|
- Birdmap_Mqtt__BrokerHostSettings__Host=localhost
|
||||||
|
- Birdmap_Mqtt__BrokerHostSettings__Port=1883
|
||||||
|
- Birdmap_Mqtt__ClientSettings__Id=ASP.NET Core client
|
||||||
|
- Birdmap_Mqtt__ClientSettings__Username=username
|
||||||
|
- Birdmap_Mqtt__ClientSettings__Password=password
|
||||||
|
- Birdmap_Mqtt__ClientSettings__Topic=devices/output
|
Loading…
Reference in New Issue
Block a user