diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..3729ff0c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*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 \ No newline at end of file diff --git a/YANLib.sln b/YANLib.sln index b0b6093b..be4e549a 100644 --- a/YANLib.sln +++ b/YANLib.sln @@ -41,6 +41,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{25EA463A-93D EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YANLib", "lib\YANLib\YANLib.csproj", "{8B38E857-59CA-446E-8E46-EAD98567E96E}" EndProject +Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{696811A9-FD68-4538-85AD-07BB9C30CFCA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -107,6 +109,10 @@ Global {8B38E857-59CA-446E-8E46-EAD98567E96E}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B38E857-59CA-446E-8E46-EAD98567E96E}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B38E857-59CA-446E-8E46-EAD98567E96E}.Release|Any CPU.Build.0 = Release|Any CPU + {696811A9-FD68-4538-85AD-07BB9C30CFCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {696811A9-FD68-4538-85AD-07BB9C30CFCA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {696811A9-FD68-4538-85AD-07BB9C30CFCA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {696811A9-FD68-4538-85AD-07BB9C30CFCA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/docker-compose.dcproj b/docker-compose.dcproj new file mode 100644 index 00000000..ca062f25 --- /dev/null +++ b/docker-compose.dcproj @@ -0,0 +1,18 @@ + + + + 2.1 + Linux + 696811a9-fd68-4538-85ad-07bb9c30cfca + LaunchBrowser + {Scheme}://localhost:{ServicePort} + yanlib.httpapi.host + + + + docker-compose.yml + + + + + \ No newline at end of file diff --git a/docker-compose.override.yml b/docker-compose.override.yml new file mode 100644 index 00000000..0b6a9cf8 --- /dev/null +++ b/docker-compose.override.yml @@ -0,0 +1,13 @@ +version: '3.4' + +services: + yanlib.httpapi.host: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=https://+:443;http://+:80 + ports: + - "80" + - "443" + volumes: + - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro + - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..ab667f17 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3.4' + +services: + yanlib.httpapi.host: + image: ${DOCKER_REGISTRY-}yanlibhttpapihost + build: + context: . + dockerfile: host/YANLib.HttpApi.Host/Dockerfile diff --git a/host/YANLib.HttpApi.Host/Dockerfile b/host/YANLib.HttpApi.Host/Dockerfile new file mode 100644 index 00000000..af778f16 --- /dev/null +++ b/host/YANLib.HttpApi.Host/Dockerfile @@ -0,0 +1,31 @@ +#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY ["NuGet.Config", "."] +COPY ["lib/YANLib/nuget.config", "lib/YANLib/"] +COPY ["host/YANLib.HttpApi.Host/YANLib.HttpApi.Host.csproj", "host/YANLib.HttpApi.Host/"] +COPY ["src/YANLib.Application/YANLib.Application.csproj", "src/YANLib.Application/"] +COPY ["lib/YANLib/YANLib.csproj", "lib/YANLib/"] +COPY ["src/YANLib.Domain/YANLib.Domain.csproj", "src/YANLib.Domain/"] +COPY ["src/YANLib.Domain.Shared/YANLib.Domain.Shared.csproj", "src/YANLib.Domain.Shared/"] +COPY ["src/YANLib.Application.Contracts/YANLib.Application.Contracts.csproj", "src/YANLib.Application.Contracts/"] +COPY ["src/YANLib.EntityFrameworkCore/YANLib.EntityFrameworkCore.csproj", "src/YANLib.EntityFrameworkCore/"] +COPY ["src/YANLib.HttpApi/YANLib.HttpApi.csproj", "src/YANLib.HttpApi/"] +RUN dotnet restore "host/YANLib.HttpApi.Host/YANLib.HttpApi.Host.csproj" +COPY . . +WORKDIR "/src/host/YANLib.HttpApi.Host" +RUN dotnet build "YANLib.HttpApi.Host.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "YANLib.HttpApi.Host.csproj" -c Release -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "YANLib.HttpApi.Host.dll"] \ No newline at end of file diff --git a/host/YANLib.HttpApi.Host/Properties/launchSettings.json b/host/YANLib.HttpApi.Host/Properties/launchSettings.json index 7ae47ee9..a253c7f9 100644 --- a/host/YANLib.HttpApi.Host/Properties/launchSettings.json +++ b/host/YANLib.HttpApi.Host/Properties/launchSettings.json @@ -1,12 +1,4 @@ { - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44380", - "sslPort": 44380 - } - }, "profiles": { "IIS Express": { "commandName": "IISExpress", @@ -18,10 +10,25 @@ "YANLib.HttpApi.Host": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:44380", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "applicationUrl": "https://localhost:44380" + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", + "publishAllPorts": true, + "useSSL": true + } + }, + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44380", + "sslPort": 44380 } } } \ No newline at end of file diff --git a/host/YANLib.HttpApi.Host/YANLib.HttpApi.Host.csproj b/host/YANLib.HttpApi.Host/YANLib.HttpApi.Host.csproj index f36e109b..1df6fe47 100644 --- a/host/YANLib.HttpApi.Host/YANLib.HttpApi.Host.csproj +++ b/host/YANLib.HttpApi.Host/YANLib.HttpApi.Host.csproj @@ -7,9 +7,13 @@ YANLib true YANLib-4681b4fd-151f-4221-84a4-929d86723e4c + Linux + ..\.. + ..\..\docker-compose.dcproj + diff --git a/launchSettings.json b/launchSettings.json new file mode 100644 index 00000000..93a56696 --- /dev/null +++ b/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Docker Compose": { + "commandName": "DockerCompose", + "commandVersion": "1.0", + "serviceActions": { + "yanlib.httpapi.host": "StartDebugging" + } + } + } +} \ No newline at end of file