From d830c523a9d133577c027bd364bb022571411ed9 Mon Sep 17 00:00:00 2001 From: Rok Rejc Date: Wed, 14 Dec 2022 14:40:12 +0100 Subject: [PATCH] Enable running concordancer (frontend) outside servers root folder. --- .../Controllers/WebAppController.cs | 42 ------------------- src/apps/Rsdo.Concordancer.Api/Dockerfile | 14 ++++++- .../Rsdo.Concordancer.Api.csproj | 3 +- src/apps/Rsdo.Concordancer.Api/Startup.cs | 2 +- .../WebApp/package-lock.json | 4 +- .../Rsdo.Concordancer.Api/WebApp/package.json | 2 +- .../WebApp/public/index.html | 5 +-- .../concordance/ConcordanceDetails.js | 4 +- .../src/components/index/IndexStatistics.js | 4 +- .../Rsdo.Concordancer.Api/WebApp/src/index.js | 5 ++- .../pages/concordance/ConcordanceResults.js | 6 +-- .../WebApp/src/pages/list/ListResults.js | 4 +- .../Rsdo.Concordancer.SystemManager.csproj | 2 +- .../Constants/ConfigurationKey.cs | 5 --- .../Rsdo.Concordancer.Core.csproj | 2 +- .../Rsdo.Concordancer.Data.csproj | 2 +- .../Rsdo.Concordancer.Infrastructure.csproj | 2 +- .../Rsdo.Concordancer.ServiceModel.csproj | 2 +- .../Rsdo.Concordancer.Services.csproj | 2 +- 19 files changed, 37 insertions(+), 75 deletions(-) delete mode 100644 src/apps/Rsdo.Concordancer.Api/Controllers/WebAppController.cs diff --git a/src/apps/Rsdo.Concordancer.Api/Controllers/WebAppController.cs b/src/apps/Rsdo.Concordancer.Api/Controllers/WebAppController.cs deleted file mode 100644 index 1da3267..0000000 --- a/src/apps/Rsdo.Concordancer.Api/Controllers/WebAppController.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Net.Mime; -using HtmlAgilityPack; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Configuration; -using Rsdo.Concordancer.Core.Constants; - -namespace Rsdo.Concordancer.Api.Controllers -{ - public class WebAppController : Controller - { - private readonly IConfiguration configuration; - private readonly IWebHostEnvironment webHostEnvironment; - - public WebAppController(IConfiguration configuration, IWebHostEnvironment webHostEnvironment) - { - this.configuration = configuration; - this.webHostEnvironment = webHostEnvironment; - } - - public IActionResult Index() - { - var indexFilePath = webHostEnvironment.WebRootFileProvider.GetFileInfo("index.html").PhysicalPath; - var html = new HtmlDocument(); - html.Load(indexFilePath); - - var baseAppPath = configuration[ConfigurationKey.Web.BaseAppPath] ?? string.Empty; - var scriptNode = HtmlNode.CreateNode($""); - var headNode = html.DocumentNode.SelectSingleNode("//head"); - headNode.ChildNodes.Add(scriptNode); - - var indexStream = new MemoryStream(); - html.Save(indexStream); - indexStream.Position = 0; - - return File(indexStream, MediaTypeNames.Text.Html); - } - } -} \ No newline at end of file diff --git a/src/apps/Rsdo.Concordancer.Api/Dockerfile b/src/apps/Rsdo.Concordancer.Api/Dockerfile index c665279..ede4bf3 100644 --- a/src/apps/Rsdo.Concordancer.Api/Dockerfile +++ b/src/apps/Rsdo.Concordancer.Api/Dockerfile @@ -4,6 +4,12 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +# INSTALL NODE.JS +RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - \ + && apt-get install -y \ + nodejs \ + && rm -rf /var/lib/apt/lists/* + # COPY LOCAL NUGET PACKAGES WORKDIR /nuget COPY local-packages/. . @@ -36,8 +42,14 @@ COPY src/core/Rsdo.Concordancer.Infrastructure/. Rsdo.Concordancer.Infrastructur COPY src/core/Rsdo.Concordancer.ServiceModel/. Rsdo.Concordancer.ServiceModel/ COPY src/core/Rsdo.Concordancer.Services/. Rsdo.Concordancer.Services/ -# BUILD +# BUILD WEBAPP AND AFTER THAT API, WHICH INCLUDES WEBAPP FROM build AS publish + +WORKDIR /src/apps/Rsdo.Concordancer.Api/WebApp +ARG WEBAPP_PUBLIC_URL='' +ENV PUBLIC_URL=${WEBAPP_PUBLIC_URL} +RUN npm install && npm run build + WORKDIR /src/apps/Rsdo.Concordancer.Api RUN dotnet publish "Rsdo.Concordancer.Api.csproj" -c Release -o /app/publish diff --git a/src/apps/Rsdo.Concordancer.Api/Rsdo.Concordancer.Api.csproj b/src/apps/Rsdo.Concordancer.Api/Rsdo.Concordancer.Api.csproj index 897933a..c07d158 100644 --- a/src/apps/Rsdo.Concordancer.Api/Rsdo.Concordancer.Api.csproj +++ b/src/apps/Rsdo.Concordancer.Api/Rsdo.Concordancer.Api.csproj @@ -4,7 +4,7 @@ net6.0 true false - 1.0.0 + 1.0.1 @@ -12,7 +12,6 @@ - diff --git a/src/apps/Rsdo.Concordancer.Api/Startup.cs b/src/apps/Rsdo.Concordancer.Api/Startup.cs index 6458b3e..40f9f0a 100644 --- a/src/apps/Rsdo.Concordancer.Api/Startup.cs +++ b/src/apps/Rsdo.Concordancer.Api/Startup.cs @@ -144,7 +144,7 @@ public class Startup { endpoints.MapControllers(); endpoints.MapHangfireDashboard("/hangfire"); - endpoints.MapFallbackToController("Index", "WebApp"); + endpoints.MapFallbackToFile("index.html"); }); } } \ No newline at end of file diff --git a/src/apps/Rsdo.Concordancer.Api/WebApp/package-lock.json b/src/apps/Rsdo.Concordancer.Api/WebApp/package-lock.json index cb141bd..3e3e75c 100644 --- a/src/apps/Rsdo.Concordancer.Api/WebApp/package-lock.json +++ b/src/apps/Rsdo.Concordancer.Api/WebApp/package-lock.json @@ -1,12 +1,12 @@ { "name": "concordancer-web", - "version": "0.1.0", + "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "concordancer-web", - "version": "0.1.0", + "version": "1.0.0", "dependencies": { "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", diff --git a/src/apps/Rsdo.Concordancer.Api/WebApp/package.json b/src/apps/Rsdo.Concordancer.Api/WebApp/package.json index b3e9c45..6cdc58b 100644 --- a/src/apps/Rsdo.Concordancer.Api/WebApp/package.json +++ b/src/apps/Rsdo.Concordancer.Api/WebApp/package.json @@ -1,6 +1,6 @@ { "name": "concordancer-web", - "version": "1.0.0", + "version": "1.0.1", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.16.5", diff --git a/src/apps/Rsdo.Concordancer.Api/WebApp/public/index.html b/src/apps/Rsdo.Concordancer.Api/WebApp/public/index.html index aac82e4..94690a4 100644 --- a/src/apps/Rsdo.Concordancer.Api/WebApp/public/index.html +++ b/src/apps/Rsdo.Concordancer.Api/WebApp/public/index.html @@ -5,10 +5,7 @@ - +