Parcourir la source

Server project with basic configuration

Lukas Angerer il y a 3 ans
Parent
commit
0f15b61dfd

+ 25 - 0
src/.dockerignore

@@ -0,0 +1,25 @@
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/.idea
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md

+ 20 - 0
src/Dockerfile

@@ -0,0 +1,20 @@
+FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
+WORKDIR /app
+EXPOSE 80
+EXPOSE 443
+
+FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
+WORKDIR /src
+COPY ["RunnersMeet.Server/RunnersMeet.Server.csproj", "RunnersMeet.Server/"]
+RUN dotnet restore "RunnersMeet.Server/RunnersMeet.Server.csproj"
+COPY . .
+WORKDIR "/src/RunnersMeet.Server"
+RUN dotnet build "RunnersMeet.Server.csproj" -c Release -o /app/build
+
+FROM build AS publish
+RUN dotnet publish "RunnersMeet.Server.csproj" -c Release -o /app/publish
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "RunnersMeet.Server.dll"]

+ 37 - 0
src/RunnersMeet.Server/AppServer.cs

@@ -0,0 +1,37 @@
+namespace RunnersMeet.Server;
+
+public class AppServer
+{
+	public void Start(string[] args)
+	{
+		var builder = WebApplication.CreateBuilder(args);
+
+		ConfigureServices(builder.Services);
+		builder.Services.AddControllers();
+		// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
+		builder.Services.AddEndpointsApiExplorer();
+		builder.Services.AddSwaggerGen();
+
+		var app = builder.Build();
+
+		// Configure the HTTP request pipeline.
+		if (app.Environment.IsDevelopment())
+		{
+			app.UseSwagger();
+			app.UseSwaggerUI();
+		}
+
+		app.UseHttpsRedirection();
+
+		app.UseAuthorization();
+
+		app.MapControllers();
+
+		app.Run();
+	}
+
+	private void ConfigureServices(IServiceCollection services)
+	{
+
+	}
+}

+ 14 - 0
src/RunnersMeet.Server/Controllers/TracksController.cs

@@ -0,0 +1,14 @@
+using Microsoft.AspNetCore.Mvc;
+
+namespace RunnersMeet.Server.Controllers;
+
+[Route("api/[controller]")]
+[ApiController]
+public class TracksController : ControllerBase
+{
+	[HttpGet]
+	public ActionResult<IEnumerable<string>> GetTracks()
+	{
+		return new string[] { "OK" };
+	}
+}

+ 4 - 0
src/RunnersMeet.Server/Program.cs

@@ -0,0 +1,4 @@
+using RunnersMeet.Server;
+
+var server = new AppServer();
+server.Start(args);

+ 15 - 0
src/RunnersMeet.Server/Properties/launchSettings.json

@@ -0,0 +1,15 @@
+{
+  "$schema": "https://json.schemastore.org/launchsettings.json",
+  "profiles": {
+    "https": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": false,
+      "launchUrl": "swagger",
+      "applicationUrl": "https://localhost:7247;http://localhost:5006",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}

+ 21 - 0
src/RunnersMeet.Server/RunnersMeet.Server.csproj

@@ -0,0 +1,21 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <Nullable>enable</Nullable>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
+    </PropertyGroup>
+
+    <ItemGroup>
+        <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.1" />
+        <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <Content Include="..\.dockerignore">
+        <Link>.dockerignore</Link>
+      </Content>
+    </ItemGroup>
+
+</Project>

+ 8 - 0
src/RunnersMeet.Server/appsettings.Development.json

@@ -0,0 +1,8 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}

+ 9 - 0
src/RunnersMeet.Server/appsettings.json

@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}

+ 0 - 0
src/RunnersMeet.Server/data/.gitkeep


+ 0 - 0
src/RunnersMeet.Server/wwwroot/.gitkeep


+ 16 - 0
src/RunnersMeet.sln

@@ -0,0 +1,16 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RunnersMeet.Server", "RunnersMeet.Server\RunnersMeet.Server.csproj", "{8ED1266A-E567-46B7-A3CF-D5C37BC9C208}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{8ED1266A-E567-46B7-A3CF-D5C37BC9C208}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8ED1266A-E567-46B7-A3CF-D5C37BC9C208}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8ED1266A-E567-46B7-A3CF-D5C37BC9C208}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8ED1266A-E567-46B7-A3CF-D5C37BC9C208}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+EndGlobal