diff --git a/samples/MicroserviceDemo/.dockerignore b/samples/MicroserviceDemo/.dockerignore new file mode 100644 index 0000000000..e694ae215f --- /dev/null +++ b/samples/MicroserviceDemo/.dockerignore @@ -0,0 +1,12 @@ +.dockerignore +.env +.git +.gitignore +.vs +.vscode +docker-compose.yml +docker-compose.*.yml +*/bin +*/obj +!obj/Docker/publish/* +!obj/Docker/empty/ diff --git a/samples/MicroserviceDemo/MicroserviceDemo.Web/Dockerfile b/samples/MicroserviceDemo/MicroserviceDemo.Web/Dockerfile new file mode 100644 index 0000000000..20a7e8868c --- /dev/null +++ b/samples/MicroserviceDemo/MicroserviceDemo.Web/Dockerfile @@ -0,0 +1,20 @@ +FROM microsoft/aspnetcore:2.0 AS base +WORKDIR /app +EXPOSE 80 + +FROM microsoft/aspnetcore-build:2.0 AS build +WORKDIR /src +COPY *.sln ./ +COPY MicroserviceDemo.Web/MicroserviceDemo.Web.csproj MicroserviceDemo.Web/ +RUN dotnet restore +COPY . . +WORKDIR /src/MicroserviceDemo.Web +RUN dotnet build -c Release -o /app + +FROM build AS publish +RUN dotnet publish -c Release -o /app + +FROM base AS final +WORKDIR /app +COPY --from=publish /app . +ENTRYPOINT ["dotnet", "MicroserviceDemo.Web.dll"] diff --git a/samples/MicroserviceDemo/MicroserviceDemo.Web/MicroserviceDemo.Web.csproj b/samples/MicroserviceDemo/MicroserviceDemo.Web/MicroserviceDemo.Web.csproj new file mode 100644 index 0000000000..13859357c5 --- /dev/null +++ b/samples/MicroserviceDemo/MicroserviceDemo.Web/MicroserviceDemo.Web.csproj @@ -0,0 +1,16 @@ + + + + netcoreapp2.0 + ..\docker-compose.dcproj + + + + + + + + + + + diff --git a/samples/MicroserviceDemo/MicroserviceDemo.Web/Program.cs b/samples/MicroserviceDemo/MicroserviceDemo.Web/Program.cs new file mode 100644 index 0000000000..483fab51ee --- /dev/null +++ b/samples/MicroserviceDemo/MicroserviceDemo.Web/Program.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; + +namespace MicroserviceDemo.Web +{ + public class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() + .Build(); + } +} diff --git a/samples/MicroserviceDemo/MicroserviceDemo.Web/Properties/launchSettings.json b/samples/MicroserviceDemo/MicroserviceDemo.Web/Properties/launchSettings.json new file mode 100644 index 0000000000..a9ae94e883 --- /dev/null +++ b/samples/MicroserviceDemo/MicroserviceDemo.Web/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:61144/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "MicroserviceDemo.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:61145/" + } + } +} diff --git a/samples/MicroserviceDemo/MicroserviceDemo.Web/Startup.cs b/samples/MicroserviceDemo/MicroserviceDemo.Web/Startup.cs new file mode 100644 index 0000000000..4c22f392d7 --- /dev/null +++ b/samples/MicroserviceDemo/MicroserviceDemo.Web/Startup.cs @@ -0,0 +1,27 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; + +namespace MicroserviceDemo.Web +{ + public class Startup + { + public void ConfigureServices(IServiceCollection services) + { + } + + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.Run(async (context) => + { + await context.Response.WriteAsync("Hello microservices!"); + }); + } + } +} diff --git a/samples/MicroserviceDemo/MicroserviceDemo.sln b/samples/MicroserviceDemo/MicroserviceDemo.sln new file mode 100644 index 0000000000..a322b1b5d2 --- /dev/null +++ b/samples/MicroserviceDemo/MicroserviceDemo.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2026 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MicroserviceDemo.Web", "MicroserviceDemo.Web\MicroserviceDemo.Web.csproj", "{0F012333-D449-43BF-87F9-FD6B78CD5022}" +EndProject +Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{E2C7F429-72E6-4AEE-9DFC-F16BD72A27BD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0F012333-D449-43BF-87F9-FD6B78CD5022}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0F012333-D449-43BF-87F9-FD6B78CD5022}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0F012333-D449-43BF-87F9-FD6B78CD5022}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0F012333-D449-43BF-87F9-FD6B78CD5022}.Release|Any CPU.Build.0 = Release|Any CPU + {E2C7F429-72E6-4AEE-9DFC-F16BD72A27BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2C7F429-72E6-4AEE-9DFC-F16BD72A27BD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2C7F429-72E6-4AEE-9DFC-F16BD72A27BD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2C7F429-72E6-4AEE-9DFC-F16BD72A27BD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {20FA72D5-E668-435D-B92F-F603D29BDDEB} + EndGlobalSection +EndGlobal diff --git a/samples/MicroserviceDemo/docker-compose.ci.build.yml b/samples/MicroserviceDemo/docker-compose.ci.build.yml new file mode 100644 index 0000000000..246b12ae80 --- /dev/null +++ b/samples/MicroserviceDemo/docker-compose.ci.build.yml @@ -0,0 +1,9 @@ +version: '3' + +services: + ci-build: + image: microsoft/aspnetcore-build:1.0-2.0 + volumes: + - .:/src + working_dir: /src + command: /bin/bash -c "dotnet restore ./MicroserviceDemo.sln && dotnet publish ./MicroserviceDemo.sln -c Release -o ./obj/Docker/publish" diff --git a/samples/MicroserviceDemo/docker-compose.dcproj b/samples/MicroserviceDemo/docker-compose.dcproj new file mode 100644 index 0000000000..47b451db91 --- /dev/null +++ b/samples/MicroserviceDemo/docker-compose.dcproj @@ -0,0 +1,19 @@ + + + + 2.0 + Linux + e2c7f429-72e6-4aee-9dfc-f16bd72a27bd + True + http://localhost:{ServicePort} + microservicedemo.web + + + + docker-compose.yml + + + + + + \ No newline at end of file diff --git a/samples/MicroserviceDemo/docker-compose.override.yml b/samples/MicroserviceDemo/docker-compose.override.yml new file mode 100644 index 0000000000..433007248e --- /dev/null +++ b/samples/MicroserviceDemo/docker-compose.override.yml @@ -0,0 +1,8 @@ +version: '3' + +services: + microservicedemo.web: + environment: + - ASPNETCORE_ENVIRONMENT=Development + ports: + - "80" diff --git a/samples/MicroserviceDemo/docker-compose.yml b/samples/MicroserviceDemo/docker-compose.yml new file mode 100644 index 0000000000..78fa564dad --- /dev/null +++ b/samples/MicroserviceDemo/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3' + +services: + microservicedemo.web: + image: microservicedemo.web + build: + context: . + dockerfile: MicroserviceDemo.Web/Dockerfile