diff --git a/.github/workflows/build.yml b/.github/workflows/build-api.yml
similarity index 95%
rename from .github/workflows/build.yml
rename to .github/workflows/build-api.yml
index f3415ae..442f9d8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build-api.yml
@@ -1,9 +1,11 @@
-name: Build Microservice Demo App
+name: Build Microservice Demo App (API)
on:
push:
branches:
- main
+ paths-ignore:
+ - "NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/**"
env:
DOTNET_VERSION: '5.0'
NODE_VERSION: '14.x'
diff --git a/.github/workflows/build-machine.yml b/.github/workflows/build-machine.yml
new file mode 100644
index 0000000..f8c83fa
--- /dev/null
+++ b/.github/workflows/build-machine.yml
@@ -0,0 +1,45 @@
+name: Build Microservice Demo App (Machine)
+
+on:
+ push:
+ branches:
+ - main
+ paths-ignore:
+ - "NetCoreMicroserviceSample/NetCoreMicroserviceSample.Api/**"
+ - "NetCoreMicroserviceSample/NetCoreMicroserviceSample.UserInterface/**"
+env:
+ DOTNET_VERSION: '5.0'
+ MACHINE_PATH: './NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine'
+ CONFIG: 'Debug'
+
+jobs:
+ build:
+ runs-on: 'ubuntu-latest'
+ steps:
+ - name: 'Checkout GitHub Action'
+ uses: actions/checkout@master
+
+ - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: ${{ env.DOTNET_VERSION }}
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v2
+ with:
+ context: ${{ env.MACHINE_PATH }}/..
+ file: ${{ env.MACHINE_PATH }}/Dockerfile
+ push: true
+ tags: rstropek/net-core-microservice-sample-machine:latest
diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Dockerfile b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Dockerfile
new file mode 100644
index 0000000..caa074d
--- /dev/null
+++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Dockerfile
@@ -0,0 +1,15 @@
+FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
+WORKDIR /app
+
+# copy csproj and restore as distinct layers
+COPY NetCoreMicroserviceSample.Machine/*.csproj NetCoreMicroserviceSample.Machine/
+RUN cd NetCoreMicroserviceSample.Machine && dotnet restore
+
+# copy everything else and build app
+COPY . .
+RUN cd NetCoreMicroserviceSample.Machine && dotnet publish -c Release -o out
+
+FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
+WORKDIR /app
+COPY --from=build /app/NetCoreMicroserviceSample.Machine/out ./
+ENTRYPOINT ["dotnet", "NetCoreMicroserviceSample.Machine.dll"]
diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj
index 27a0042..ba93dee 100644
--- a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj
+++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj
@@ -10,6 +10,7 @@
+
diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs
index 308a571..aef1ef6 100644
--- a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs
+++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs
@@ -28,6 +28,11 @@ public Startup(IConfiguration configuration)
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
+ if (Configuration.GetValue("UseLetsEncrypt", false))
+ {
+ services.AddLettuceEncrypt();
+ }
+
string domain = $"{Configuration["Oidc:Domain"]}";
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json
index 31d606f..035ea5d 100644
--- a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json
+++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json
@@ -8,9 +8,16 @@
},
"Oidc": {
"Domain": "https://demo.identityserver.io",
- "Audience": "api",
+ "Audience": "api",
"ClientId": "interactive.confidential",
"ClientSecret": "secret"
},
- "AllowedHosts": "*"
+ "AllowedHosts": "*",
+ "UseLetsEncrypt": true,
+ "LettuceEncrypt": {
+ "AcceptTermsOfService": true,
+ "UseStagingServer": true,
+ "DomainNames": [ "machine-microservice-training.westeurope.azurecontainer.io" ],
+ "EmailAddress": "rainer@software-architects.at"
+ }
}