Browse Source

Merge branch 'main' into enisn/payment-service

pull/17/head
enisn 5 years ago
parent
commit
398dafea5b
  1. 1
      .gitignore
  2. 14
      EShopOnAbp.sln
  3. 9
      NuGet.Config
  4. 16
      apps/angular/Dockerfile
  5. 5
      apps/angular/Dockerfile.local
  6. 21
      apps/angular/dynamic-env.json
  7. 30
      apps/angular/nginx.conf
  8. 2
      apps/angular/package.json
  9. 8
      apps/angular/src/environments/environment.prod.ts
  10. 2
      apps/angular/src/environments/environment.ts
  11. 57
      apps/auth-server/src/EShopOnAbp.AuthServer/Dockerfile
  12. 2
      apps/auth-server/src/EShopOnAbp.AuthServer/Dockerfile.local
  13. 35
      apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj
  14. 66
      apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbpAuthServerModule.cs
  15. 5
      apps/auth-server/src/EShopOnAbp.AuthServer/appsettings.json
  16. BIN
      apps/auth-server/src/EShopOnAbp.AuthServer/eshoponabp-authserver.pfx
  17. 4
      apps/auth-server/src/EShopOnAbp.AuthServer/package.json
  18. 4
      apps/auth-server/src/EShopOnAbp.AuthServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  19. 474
      apps/auth-server/src/EShopOnAbp.AuthServer/yarn.lock
  20. 57
      apps/public-web/src/EShopOnAbp.PublicWeb/Dockerfile
  21. 2
      apps/public-web/src/EShopOnAbp.PublicWeb/Dockerfile.local
  22. 49
      apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj
  23. 5
      apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs
  24. 2
      apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json
  25. 2
      apps/public-web/src/EShopOnAbp.PublicWeb/package.json
  26. 4
      apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  27. 238
      apps/public-web/src/EShopOnAbp.PublicWeb/yarn.lock
  28. 68
      build/build-images-locally.ps1
  29. 64
      build/build-images.ps1
  30. BIN
      docs/roadmap/Phase_1.png
  31. 22
      etc/README.md
  32. 4
      etc/k8s/deploy-staging.ps1
  33. 52
      etc/k8s/eshoponabp/charts/administration/templates/administration-deployment.yaml
  34. 10
      etc/k8s/eshoponabp/charts/administration/templates/administration-ingress.yaml
  35. 31
      etc/k8s/eshoponabp/charts/administration/templates/administration.yaml
  36. 33
      etc/k8s/eshoponabp/charts/administration/values.yaml
  37. 49
      etc/k8s/eshoponabp/charts/authserver/templates/authserver-deployment.yaml
  38. 12
      etc/k8s/eshoponabp/charts/authserver/templates/authserver-ingress.yaml
  39. 30
      etc/k8s/eshoponabp/charts/authserver/templates/authserver.yaml
  40. 27
      etc/k8s/eshoponabp/charts/authserver/values.yaml
  41. 17
      etc/k8s/eshoponabp/charts/consul/templates/consul-service.yaml
  42. 24
      etc/k8s/eshoponabp/charts/consul/templates/consul.yaml
  43. 0
      etc/k8s/eshoponabp/charts/consul/values.yaml
  44. 6
      etc/k8s/eshoponabp/charts/gateway-web-public/Chart.yaml
  45. 74
      etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-configmap.yaml
  46. 52
      etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-deployment.yaml
  47. 37
      etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-ingress.yaml
  48. 0
      etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-service.yaml
  49. 45
      etc/k8s/eshoponabp/charts/gateway-web-public/values.yaml
  50. 4
      etc/k8s/eshoponabp/charts/gateway-web/Chart.yaml
  51. 90
      etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-configmap.yaml
  52. 54
      etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-deployment.yaml
  53. 37
      etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-ingress.yaml
  54. 14
      etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-service.yaml
  55. 35
      etc/k8s/eshoponabp/charts/gateway-web/values.yaml
  56. 67
      etc/k8s/eshoponabp/charts/identity/templates/identity-deployment.yaml
  57. 10
      etc/k8s/eshoponabp/charts/identity/templates/identity-ingress.yaml
  58. 31
      etc/k8s/eshoponabp/charts/identity/templates/identity.yaml
  59. 37
      etc/k8s/eshoponabp/charts/identity/values.yaml
  60. 44
      etc/k8s/eshoponabp/charts/public-web/templates/public-web-deployment.yaml
  61. 24
      etc/k8s/eshoponabp/charts/public-web/templates/public-web-ingress.yaml
  62. 22
      etc/k8s/eshoponabp/charts/public-web/values.yaml
  63. 6
      etc/k8s/eshoponabp/charts/public-webgateway/Chart.yaml
  64. 37
      etc/k8s/eshoponabp/charts/public-webgateway/templates/public-webgateway-ingress.yaml
  65. 24
      etc/k8s/eshoponabp/charts/public-webgateway/templates/public-webgateway.yaml
  66. 0
      etc/k8s/eshoponabp/charts/public-webgateway/values.yaml
  67. 10
      etc/k8s/eshoponabp/charts/saas/templates/saas-ingress.yaml
  68. 30
      etc/k8s/eshoponabp/charts/saas/templates/saas.yaml
  69. 25
      etc/k8s/eshoponabp/charts/saas/values.yaml
  70. 4
      etc/k8s/eshoponabp/charts/sqlserver/templates/sqlserver.yaml
  71. 6
      etc/k8s/eshoponabp/charts/web/Chart.yaml
  72. 14
      etc/k8s/eshoponabp/charts/web/templates/web-deployment.yaml
  73. 37
      etc/k8s/eshoponabp/charts/web/templates/web-ingress.yaml
  74. 14
      etc/k8s/eshoponabp/charts/web/templates/web-service.yaml
  75. 15
      etc/k8s/eshoponabp/charts/web/values.yaml
  76. 9
      etc/k8s/eshoponabp/templates/NOTES.txt
  77. 19
      etc/k8s/eshoponabp/templates/_helpers.tpl
  78. 15
      etc/k8s/eshoponabp/templates/tests/test-connection.yaml
  79. 227
      etc/k8s/eshoponabp/values.yaml
  80. 31
      etc/k8s/tls-cert/eshop-st-cert.pem
  81. 28
      etc/k8s/tls-cert/eshop-st-key.pem
  82. 9
      etc/k8s/tls-cert/notes.md
  83. 13
      etc/scripts/build-images.ps1
  84. 32
      gateways/internal/EShopOnAbp.InternalGateway.sln
  85. 13
      gateways/internal/src/EShopOnAbp.InternalGateway/Controllers/HomeController.cs
  86. 19
      gateways/internal/src/EShopOnAbp.InternalGateway/EShopOnAbp.InternalGateway.csproj
  87. 67
      gateways/internal/src/EShopOnAbp.InternalGateway/EShopOnAbpInternalGatewayModule.cs
  88. 46
      gateways/internal/src/EShopOnAbp.InternalGateway/Program.cs
  89. 29
      gateways/internal/src/EShopOnAbp.InternalGateway/Properties/launchSettings.json
  90. 19
      gateways/internal/src/EShopOnAbp.InternalGateway/Startup.cs
  91. 9
      gateways/internal/src/EShopOnAbp.InternalGateway/appsettings.Development.json
  92. 56
      gateways/web-public/src/EShopOnAbp.WebPublicGateway/Dockerfile
  93. 4
      gateways/web-public/src/EShopOnAbp.WebPublicGateway/Dockerfile.local
  94. 4
      gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs
  95. 2
      gateways/web-public/src/EShopOnAbp.WebPublicGateway/Program.cs
  96. 7
      gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json
  97. 56
      gateways/web/src/EShopOnAbp.WebGateway/Dockerfile
  98. 4
      gateways/web/src/EShopOnAbp.WebGateway/Dockerfile.local
  99. 24
      gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbpWebGatewayModule.cs
  100. 7
      gateways/web/src/EShopOnAbp.WebGateway/appsettings.json

1
.gitignore

@ -10,6 +10,7 @@
*.userosscache *.userosscache
*.sln.docstates *.sln.docstates
*.idea *.idea
*.tye
# User-specific files (MonoDevelop/Xamarin Studio) # User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs *.userprefs

14
EShopOnAbp.sln

@ -23,14 +23,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.Shared.Hosting.M
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.AdministrationService.HttpApi.Host", "services\administration\src\EShopOnAbp.AdministrationService.HttpApi.Host\EShopOnAbp.AdministrationService.HttpApi.Host.csproj", "{0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.AdministrationService.HttpApi.Host", "services\administration\src\EShopOnAbp.AdministrationService.HttpApi.Host\EShopOnAbp.AdministrationService.HttpApi.Host.csproj", "{0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.HttpApi.Host", "services\saas\src\EShopOnAbp.SaasService.HttpApi.Host\EShopOnAbp.SaasService.HttpApi.Host.csproj", "{9203C6CC-F491-4A9F-93B3-3BEA018D87B4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.IdentityService.HttpApi.Host", "services\identity\src\EShopOnAbp.IdentityService.HttpApi.Host\EShopOnAbp.IdentityService.HttpApi.Host.csproj", "{FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.IdentityService.HttpApi.Host", "services\identity\src\EShopOnAbp.IdentityService.HttpApi.Host\EShopOnAbp.IdentityService.HttpApi.Host.csproj", "{FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.Shared.Hosting.Gateways", "shared\EShopOnAbp.Shared.Hosting.Gateways\EShopOnAbp.Shared.Hosting.Gateways.csproj", "{590B609C-5887-4896-9FC5-5E54A2658B18}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.Shared.Hosting.Gateways", "shared\EShopOnAbp.Shared.Hosting.Gateways\EShopOnAbp.Shared.Hosting.Gateways.csproj", "{590B609C-5887-4896-9FC5-5E54A2658B18}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.InternalGateway", "gateways\internal\src\EShopOnAbp.InternalGateway\EShopOnAbp.InternalGateway.csproj", "{857EE54A-6116-46AA-AB34-50B19E51DB3B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.WebGateway", "gateways\web\src\EShopOnAbp.WebGateway\EShopOnAbp.WebGateway.csproj", "{5D653BE4-7653-4684-B9F0-9A9B955093E5}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.WebGateway", "gateways\web\src\EShopOnAbp.WebGateway\EShopOnAbp.WebGateway.csproj", "{5D653BE4-7653-4684-B9F0-9A9B955093E5}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.WebPublicGateway", "gateways\web-public\src\EShopOnAbp.WebPublicGateway\EShopOnAbp.WebPublicGateway.csproj", "{2E0B715C-3AAD-47B3-B2EB-D34CB24CBEFA}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.WebPublicGateway", "gateways\web-public\src\EShopOnAbp.WebPublicGateway\EShopOnAbp.WebPublicGateway.csproj", "{2E0B715C-3AAD-47B3-B2EB-D34CB24CBEFA}"
@ -75,10 +71,6 @@ Global
{0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}.Debug|Any CPU.Build.0 = Debug|Any CPU {0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}.Release|Any CPU.ActiveCfg = Release|Any CPU {0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}.Release|Any CPU.Build.0 = Release|Any CPU {0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD}.Release|Any CPU.Build.0 = Release|Any CPU
{9203C6CC-F491-4A9F-93B3-3BEA018D87B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9203C6CC-F491-4A9F-93B3-3BEA018D87B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9203C6CC-F491-4A9F-93B3-3BEA018D87B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9203C6CC-F491-4A9F-93B3-3BEA018D87B4}.Release|Any CPU.Build.0 = Release|Any CPU
{FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}.Debug|Any CPU.Build.0 = Debug|Any CPU {FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}.Release|Any CPU.ActiveCfg = Release|Any CPU {FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -87,10 +79,6 @@ Global
{590B609C-5887-4896-9FC5-5E54A2658B18}.Debug|Any CPU.Build.0 = Debug|Any CPU {590B609C-5887-4896-9FC5-5E54A2658B18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{590B609C-5887-4896-9FC5-5E54A2658B18}.Release|Any CPU.ActiveCfg = Release|Any CPU {590B609C-5887-4896-9FC5-5E54A2658B18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{590B609C-5887-4896-9FC5-5E54A2658B18}.Release|Any CPU.Build.0 = Release|Any CPU {590B609C-5887-4896-9FC5-5E54A2658B18}.Release|Any CPU.Build.0 = Release|Any CPU
{857EE54A-6116-46AA-AB34-50B19E51DB3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{857EE54A-6116-46AA-AB34-50B19E51DB3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{857EE54A-6116-46AA-AB34-50B19E51DB3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{857EE54A-6116-46AA-AB34-50B19E51DB3B}.Release|Any CPU.Build.0 = Release|Any CPU
{5D653BE4-7653-4684-B9F0-9A9B955093E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5D653BE4-7653-4684-B9F0-9A9B955093E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D653BE4-7653-4684-B9F0-9A9B955093E5}.Debug|Any CPU.Build.0 = Debug|Any CPU {5D653BE4-7653-4684-B9F0-9A9B955093E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D653BE4-7653-4684-B9F0-9A9B955093E5}.Release|Any CPU.ActiveCfg = Release|Any CPU {5D653BE4-7653-4684-B9F0-9A9B955093E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -130,10 +118,8 @@ Global
{2B608875-8226-44E4-B93A-D475E11A7B80} = {B8B59303-2178-459B-91A8-DF353044E090} {2B608875-8226-44E4-B93A-D475E11A7B80} = {B8B59303-2178-459B-91A8-DF353044E090}
{49DDB3F1-6200-445E-9A0D-0339E31D5D77} = {B8B59303-2178-459B-91A8-DF353044E090} {49DDB3F1-6200-445E-9A0D-0339E31D5D77} = {B8B59303-2178-459B-91A8-DF353044E090}
{0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD} = {F415FFFD-E52D-4EBE-98DC-067C1EFFFFE3} {0FA9667E-6A08-4EFF-8CAF-D2A3C3C1FBBD} = {F415FFFD-E52D-4EBE-98DC-067C1EFFFFE3}
{9203C6CC-F491-4A9F-93B3-3BEA018D87B4} = {F415FFFD-E52D-4EBE-98DC-067C1EFFFFE3}
{FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA} = {F415FFFD-E52D-4EBE-98DC-067C1EFFFFE3} {FDFCA1B4-FD9D-445C-8655-3DF3F2D57CEA} = {F415FFFD-E52D-4EBE-98DC-067C1EFFFFE3}
{590B609C-5887-4896-9FC5-5E54A2658B18} = {B8B59303-2178-459B-91A8-DF353044E090} {590B609C-5887-4896-9FC5-5E54A2658B18} = {B8B59303-2178-459B-91A8-DF353044E090}
{857EE54A-6116-46AA-AB34-50B19E51DB3B} = {1484E912-DCF3-4568-A72C-4C7622104DB8}
{5D653BE4-7653-4684-B9F0-9A9B955093E5} = {1484E912-DCF3-4568-A72C-4C7622104DB8} {5D653BE4-7653-4684-B9F0-9A9B955093E5} = {1484E912-DCF3-4568-A72C-4C7622104DB8}
{2E0B715C-3AAD-47B3-B2EB-D34CB24CBEFA} = {1484E912-DCF3-4568-A72C-4C7622104DB8} {2E0B715C-3AAD-47B3-B2EB-D34CB24CBEFA} = {1484E912-DCF3-4568-A72C-4C7622104DB8}
{969029FC-CFCF-4F95-9778-E5C69117711E} = {866DB6CC-FEA8-4CC2-A2E4-143537D197B6} {969029FC-CFCF-4F95-9778-E5C69117711E} = {866DB6CC-FEA8-4CC2-A2E4-143537D197B6}

9
NuGet.Config

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="packages" />
</config>
<packageSources>
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>

16
apps/angular/Dockerfile

@ -1,3 +1,15 @@
FROM nginx:alpine FROM node:14-alpine as build
WORKDIR /app WORKDIR /app
COPY dist/EShopOnAbp /usr/share/nginx/html COPY package*.json /app/
RUN npm install
COPY . /app
ARG configuration=production
RUN npm run ng build -- --output-path=dist/EShopOnAbp --configuration $configuration
FROM nginx:alpine
COPY dynamic-env.json /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist/EShopOnAbp/ /usr/share/nginx/html

5
apps/angular/Dockerfile.local

@ -0,0 +1,5 @@
FROM nginx:alpine
WORKDIR /app
COPY dist/EShopOnAbp /usr/share/nginx/html
COPY dynamic-env.json /usr/share/nginx/html
COPY /nginx.conf /etc/nginx/conf.d/default.conf

21
apps/angular/dynamic-env.json

@ -0,0 +1,21 @@
{
"production": true,
"application": {
"baseUrl":"https://eshop-st-web",
"name": "EShopOnAbp",
"logoUrl": ""
},
"oAuthConfig": {
"issuer": "https://eshop-st-authserver",
"redirectUri": "https://eshop-st-web",
"clientId": "EShopOnAbp_App",
"responseType": "code",
"scope": "offline_access openid profile email phone IdentityService AdministrationService SaasService"
},
"apis": {
"default": {
"url": "https://eshop-st-gateway-web",
"rootNamespace": "EShopOnAbp"
}
}
}

30
apps/angular/nginx.conf

@ -0,0 +1,30 @@
server {
listen 80;
listen [::]:80;
server_name _;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /getEnvConfig {
default_type 'application/json';
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Content-Type' 'application/json';
try_files $uri /dynamic-env.json;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

2
apps/angular/package.json

@ -56,4 +56,4 @@
"tslint": "~6.1.0", "tslint": "~6.1.0",
"typescript": "~4.3.5" "typescript": "~4.3.5"
} }
} }

8
apps/angular/src/environments/environment.prod.ts

@ -12,9 +12,9 @@ export const environment = {
oAuthConfig: { oAuthConfig: {
issuer: 'https://localhost:44394', issuer: 'https://localhost:44394',
redirectUri: baseUrl, redirectUri: baseUrl,
clientId: 'EShopOnAbp_App', clientId: 'Web',
responseType: 'code', responseType: 'code',
scope: 'offline_access EShopOnAbp', scope: 'offline_access openid profile email phone IdentityService AdministrationService SaasService',
}, },
apis: { apis: {
default: { default: {
@ -22,4 +22,8 @@ export const environment = {
rootNamespace: 'EShopOnAbp', rootNamespace: 'EShopOnAbp',
}, },
}, },
remoteEnv:{
url: "/getEnvConfig",
mergeStrategy:'deepmerge'
}
} as Environment; } as Environment;

2
apps/angular/src/environments/environment.ts

@ -11,7 +11,7 @@ export const environment = {
oAuthConfig: { oAuthConfig: {
issuer: 'https://localhost:44330', issuer: 'https://localhost:44330',
redirectUri: baseUrl, redirectUri: baseUrl,
clientId: 'EShopOnAbp_Angular', clientId: 'Web',
responseType: 'code', responseType: 'code',
scope: scope:
'offline_access openid profile email phone IdentityService AdministrationService SaasService', 'offline_access openid profile email phone IdentityService AdministrationService SaasService',

57
apps/auth-server/src/EShopOnAbp.AuthServer/Dockerfile

@ -1,4 +1,53 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
COPY bin/Release/net6.0/publish/ app/ WORKDIR /app
WORKDIR /app EXPOSE 80
ENTRYPOINT ["dotnet", "EShopOnAbp.AuthServer.dll"] EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
# It's important to keep lines from here down to "COPY . ." identical in all Dockerfiles
# to take advantage of Docker's build cache, to speed up local container builds
COPY "EShopOnAbp.sln" "EShopOnAbp.sln"
# Applications
COPY "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj" "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj"
COPY "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj" "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj"
# Shared
COPY "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj" "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj" "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj" "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj" "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj"
COPY "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj" "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj"
# Microservices
COPY "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj" "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj"
COPY "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj" "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj"
COPY *"services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj" "services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj"
COPY *"services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj" "services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj"
COPY *"services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj" "services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj"
COPY *"services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj" "services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj"
COPY *"services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj" "services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj"
# Gateways
COPY "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj" "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj"
COPY "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj" "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj"
COPY "NuGet.Config" "NuGet.Config"
RUN dotnet restore "EShopOnAbp.sln"
COPY . .
WORKDIR "/src/apps/auth-server/src/EShopOnAbp.AuthServer"
RUN dotnet publish -c Release -o /app
# Should be used after .net6 is out of preview for better performance
# RUN dotnet publish --no-restore -c Release -o /app
FROM build AS publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "EShopOnAbp.AuthServer.dll"]

2
gateways/internal/src/EShopOnAbp.InternalGateway/Dockerfile → apps/auth-server/src/EShopOnAbp.AuthServer/Dockerfile.local

@ -1,4 +1,4 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0 FROM mcr.microsoft.com/dotnet/aspnet:6.0
COPY bin/Release/net6.0/publish/ app/ COPY bin/Release/net6.0/publish/ app/
WORKDIR /app WORKDIR /app
ENTRYPOINT ["dotnet", "EShopOnAbp.InternalGateway.dll"] ENTRYPOINT ["dotnet", "EShopOnAbp.AuthServer.dll"]

35
apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj

@ -2,32 +2,39 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.0-rc.1.21452.15" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.0-rc.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0-rc.1.21452.10" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0-rc.*" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="5.0.0-beta.1" /> <PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.EventBus.RabbitMQ" Version="5.0.0-beta.1" /> <PackageReference Include="Volo.Abp.EventBus.RabbitMQ" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.BackgroundJobs.RabbitMQ" Version="5.0.0-beta.1" /> <PackageReference Include="Volo.Abp.BackgroundJobs.RabbitMQ" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="5.0.0-beta.1" /> <PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="5.0.0-beta.1" /> <PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="5.0.0-beta.1" /> <PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.Account.Application" Version="5.0.0-beta.1" /> <PackageReference Include="Volo.Abp.Account.Application" Version="5.0.0-beta.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Hosting.AspNetCore\EShopOnAbp.Shared.Hosting.AspNetCore.csproj" /> <ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Hosting.AspNetCore\EShopOnAbp.Shared.Hosting.AspNetCore.csproj" />
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Localization\EShopOnAbp.Shared.Localization.csproj" /> <ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Localization\EShopOnAbp.Shared.Localization.csproj" />
<ProjectReference Include="..\..\..\..\services\administration\src\EShopOnAbp.AdministrationService.EntityFrameworkCore\EShopOnAbp.AdministrationService.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\..\..\services\administration\src\EShopOnAbp.AdministrationService.EntityFrameworkCore\EShopOnAbp.AdministrationService.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\..\..\services\identity\src\EShopOnAbp.IdentityService.EntityFrameworkCore\EShopOnAbp.IdentityService.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\..\..\services\identity\src\EShopOnAbp.IdentityService.EntityFrameworkCore\EShopOnAbp.IdentityService.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\..\..\services\saas\src\EShopOnAbp.SaasService.EntityFrameworkCore\EShopOnAbp.SaasService.EntityFrameworkCore.csproj" /> </ItemGroup>
<ItemGroup>
<Compile Remove="Logs\**" />
<Content Remove="Logs\**" />
<EmbeddedResource Remove="Logs\**" />
<None Remove="Logs\**" />
<None Remove="eshoponabp-authserver.pfx" />
<Content Include="eshoponabp-authserver.pfx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup> </ItemGroup>
</Project> </Project>

66
apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbpAuthServerModule.cs

@ -1,6 +1,5 @@
using EShopOnAbp.AdministrationService.EntityFrameworkCore; using EShopOnAbp.AdministrationService.EntityFrameworkCore;
using EShopOnAbp.IdentityService.EntityFrameworkCore; using EShopOnAbp.IdentityService.EntityFrameworkCore;
using EShopOnAbp.SaasService.EntityFrameworkCore;
using EShopOnAbp.Shared.Hosting.AspNetCore; using EShopOnAbp.Shared.Hosting.AspNetCore;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
@ -12,6 +11,11 @@ using StackExchange.Redis;
using System; using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Security.Cryptography.X509Certificates;
using IdentityServer4.Configuration;
using IdentityServer4.Extensions;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Account; using Volo.Abp.Account;
using Volo.Abp.Account.Web; using Volo.Abp.Account.Web;
@ -23,6 +27,7 @@ using Volo.Abp.Caching;
using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.Caching.StackExchangeRedis;
using Volo.Abp.Emailing; using Volo.Abp.Emailing;
using Volo.Abp.EventBus.RabbitMq; using Volo.Abp.EventBus.RabbitMq;
using Volo.Abp.IdentityServer;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.UI.Navigation.Urls;
@ -40,15 +45,54 @@ namespace EShopOnAbp.AuthServer
typeof(EShopOnAbpSharedHostingAspNetCoreModule), typeof(EShopOnAbpSharedHostingAspNetCoreModule),
typeof(EShopOnAbpSharedLocalizationModule), typeof(EShopOnAbpSharedLocalizationModule),
typeof(AdministrationServiceEntityFrameworkCoreModule), typeof(AdministrationServiceEntityFrameworkCoreModule),
typeof(IdentityServiceEntityFrameworkCoreModule), typeof(IdentityServiceEntityFrameworkCoreModule)
typeof(SaasServiceEntityFrameworkCoreModule)
)] )]
public class EShopOnAbpAuthServerModule : AbpModule public class EShopOnAbpAuthServerModule : AbpModule
{ {
public override void PreConfigureServices(ServiceConfigurationContext context)
{
var hostingEnvironment = context.Services.GetHostingEnvironment();
if (!hostingEnvironment.IsDevelopment())
{
var configuration = context.Services.GetConfiguration();
PreConfigure<AbpIdentityServerBuilderOptions>(options =>
{
options.AddDeveloperSigningCredential = false;
});
PreConfigure<IIdentityServerBuilder>(builder =>
{
builder.AddSigningCredential(GetSigningCertificate(hostingEnvironment, configuration));
});
}
}
private X509Certificate2 GetSigningCertificate(IWebHostEnvironment hostingEnv, IConfiguration configuration)
{
var fileName = "eshoponabp-authserver.pfx";
var passPhrase = "780F3C11-0A96-40DE-B335-9848BE88C77D";
var file = Path.Combine(hostingEnv.ContentRootPath, fileName);
if (!File.Exists(file))
{
throw new FileNotFoundException($"Signing Certificate couldn't found: {file}");
}
return new X509Certificate2(file, passPhrase);
}
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
Configure<IdentityServerOptions>(options =>
{
options.IssuerUri = configuration["App:SelfUrl"];
});
Configure<AbpMultiTenancyOptions>(options => Configure<AbpMultiTenancyOptions>(options =>
{ {
@ -74,7 +118,8 @@ namespace EShopOnAbp.AuthServer
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
context.Services context.Services
.AddDataProtection() .AddDataProtection()
.PersistKeysToStackExchangeRedis(redis, "EShopOnAbp-Protection-Keys"); .PersistKeysToStackExchangeRedis(redis, "EShopOnAbp-Protection-Keys")
.SetApplicationName("eShopOnAbp-AuthServer");
context.Services.AddCors(options => context.Services.AddCors(options =>
{ {
@ -114,10 +159,16 @@ namespace EShopOnAbp.AuthServer
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
var env = context.GetEnvironment(); var env = context.GetEnvironment();
app.Use((ctx, next) => var configuration = context.ServiceProvider.GetRequiredService<IConfiguration>();
app.Use(async (ctx, next) =>
{ {
ctx.Request.Scheme = "https"; if (ctx.Request.Headers.ContainsKey("from-ingress"))
return next(); {
ctx.SetIdentityServerOrigin(configuration["App:SelfUrl"]);
}
await next();
}); });
if (env.IsDevelopment()) if (env.IsDevelopment())
@ -138,7 +189,6 @@ namespace EShopOnAbp.AuthServer
app.UseCors(); app.UseCors();
// app.UseHttpMetrics(); // app.UseHttpMetrics();
app.UseAuthentication(); app.UseAuthentication();
app.UseMultiTenancy();
app.UseAbpSerilogEnrichers(); app.UseAbpSerilogEnrichers();
app.UseUnitOfWork(); app.UseUnitOfWork();
app.UseIdentityServer(); app.UseIdentityServer();

5
apps/auth-server/src/EShopOnAbp.AuthServer/appsettings.json

@ -1,7 +1,7 @@
{ {
"App": { "App": {
"SelfUrl": "https://localhost:44330", "SelfUrl": "https://localhost:44330",
"CorsOrigins": "https://*.EShopOnAbp.com,http://localhost:4200,https://localhost:44307,https://localhost:44371,https://localhost:44372,https://localhost:44353", "CorsOrigins": "https://*.EShopOnAbp.com,http://localhost:4200,https://localhost:44307,https://localhost:44372,https://localhost:44353",
"RedirectAllowedUrls": "http://localhost:4200,https://localhost:44307" "RedirectAllowedUrls": "http://localhost:4200,https://localhost:44307"
}, },
"Logging": { "Logging": {
@ -14,8 +14,7 @@
"AllowedHosts": "*", "AllowedHosts": "*",
"ConnectionStrings": { "ConnectionStrings": {
"IdentityService": "Server=localhost,1434;Database=EShopOnAbp_Identity;User Id=sa;password=myPassw0rd;MultipleActiveResultSets=true", "IdentityService": "Server=localhost,1434;Database=EShopOnAbp_Identity;User Id=sa;password=myPassw0rd;MultipleActiveResultSets=true",
"AdministrationService": "Server=localhost,1434;Database=EShopOnAbp_Administration;User Id=sa;password=myPassw0rd;MultipleActiveResultSets=true", "AdministrationService": "Server=localhost,1434;Database=EShopOnAbp_Administration;User Id=sa;password=myPassw0rd;MultipleActiveResultSets=true"
"SaasService": "Server=localhost,1434;Database=EShopOnAbp_Saas;User Id=sa;password=myPassw0rd;MultipleActiveResultSets=true"
}, },
"StringEncryption": { "StringEncryption": {
"DefaultPassPhrase": "gsKnGZ041HLL4IM8" "DefaultPassPhrase": "gsKnGZ041HLL4IM8"

BIN
apps/auth-server/src/EShopOnAbp.AuthServer/eshoponabp-authserver.pfx

Binary file not shown.

4
apps/auth-server/src/EShopOnAbp.AuthServer/package.json

@ -3,7 +3,7 @@
"name": "EShopOnAbpAuthServer", "name": "EShopOnAbpAuthServer",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~5.0.0-beta.1", "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
"@volo/account": "~4.4.3" "@volo/account": "^5.0.0-beta.2"
} }
} }

4
apps/auth-server/src/EShopOnAbp.AuthServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/* /*
https://select2.org/troubleshooting/common-problems https://select2.org/troubleshooting/common-problems
*/ */
$.fn.modal.Constructor.prototype._enforceFocus = function () { }; if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

474
apps/auth-server/src/EShopOnAbp.AuthServer/yarn.lock

@ -2,57 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~5.0.0-beta.1": "@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg== integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1" "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": "@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.3" "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
"@abp/bootstrap" "~4.4.3" "@abp/bootstrap" "~5.0.0-beta.2"
"@abp/bootstrap-datepicker" "~4.4.3" "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
"@abp/datatables.net-bs4" "~4.4.3" "@abp/datatables.net-bs4" "~5.0.0-beta.2"
"@abp/font-awesome" "~4.4.3" "@abp/font-awesome" "~5.0.0-beta.2"
"@abp/jquery-form" "~4.4.3" "@abp/jquery-form" "~5.0.0-beta.2"
"@abp/jquery-validation-unobtrusive" "~4.4.3" "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
"@abp/lodash" "~4.4.3" "@abp/lodash" "~5.0.0-beta.2"
"@abp/luxon" "~4.4.3" "@abp/luxon" "~5.0.0-beta.2"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.3" "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
"@abp/select2" "~4.4.3" "@abp/select2" "~5.0.0-beta.2"
"@abp/sweetalert" "~4.4.3" "@abp/sweetalert2" "~5.0.0-beta.2"
"@abp/timeago" "~4.4.3" "@abp/timeago" "~5.0.0-beta.2"
"@abp/toastr" "~4.4.3" "@abp/toastr" "~5.0.0-beta.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1": "@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A== integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
"@abp/bootstrap" "~5.0.0-beta.1"
"@abp/bootstrap-datepicker" "~5.0.0-beta.1"
"@abp/datatables.net-bs4" "~5.0.0-beta.1"
"@abp/font-awesome" "~5.0.0-beta.1"
"@abp/jquery-form" "~5.0.0-beta.1"
"@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
"@abp/lodash" "~5.0.0-beta.1"
"@abp/luxon" "~5.0.0-beta.1"
"@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
"@abp/select2" "~5.0.0-beta.1"
"@abp/sweetalert2" "~5.0.0-beta.1"
"@abp/timeago" "~5.0.0-beta.1"
"@abp/toastr" "~5.0.0-beta.1"
"@abp/aspnetcore.mvc.ui@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049"
integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -61,315 +41,161 @@
merge-stream "^2.0.0" merge-stream "^2.0.0"
micromatch "^4.0.2" micromatch "^4.0.2"
"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1": "@abp/bootstrap-datepicker@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ== integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
glob "^7.1.6"
gulp "^4.0.2"
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265"
integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-datepicker@~5.0.0-beta.1": "@abp/bootstrap@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ== integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" "@abp/core" "~5.0.0-beta.2"
"@abp/bootstrap@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e"
integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA==
dependencies:
"@abp/core" "~4.4.3"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
"@abp/bootstrap@~5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
dependencies:
"@abp/core" "~5.0.0-beta.1"
bootstrap "^4.6.0" bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1" bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~4.4.3": "@abp/core@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
"@abp/utils" "^4.4.3"
"@abp/core@~5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
dependencies: dependencies:
"@abp/utils" "^5.0.0-beta.1" "@abp/utils" "^5.0.0-beta.2"
"@abp/cropperjs@~4.4.3": "@abp/cropperjs@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/cropperjs/-/cropperjs-4.4.3.tgz#9320e6c827acdc4eb1c842e24a122a5bc4f447b6" resolved "https://registry.yarnpkg.com/@abp/cropperjs/-/cropperjs-5.0.0-beta.2.tgz#6b8d870e85add42941f778cec14122f962cf8e4b"
integrity sha512-dbmfIz74AbF06gzDTtEeSTNAinjHY5b3Ea+sMyzJMr9akhi2ISEQB2TWU1VFbuFebnIPvLgKG1Yr34crG6Al6w== integrity sha512-fkkomk3+7gMoEGyx6Hq2cLC4zsCtddwz7QamjEA7g7SxzQf3Rvfv36Nk/GBf78Jn/5eQXAXwLiNIXxeYDTyARA==
dependencies: dependencies:
"@abp/core" "~4.4.3" "@abp/core" "~5.0.0-beta.2"
cropperjs "^1.5.7" cropperjs "^1.5.7"
"@abp/datatables.net-bs4@~4.4.3": "@abp/datatables.net-bs4@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies: dependencies:
"@abp/datatables.net" "~4.4.3" "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net-bs4@~5.0.0-beta.1": "@abp/datatables.net@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ== integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies: dependencies:
"@abp/datatables.net" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723"
integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg==
dependencies:
"@abp/jquery" "~4.4.3"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/datatables.net@~5.0.0-beta.1": "@abp/font-awesome@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw== integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
"@abp/jquery" "~5.0.0-beta.1"
datatables.net "^1.10.21"
"@abp/font-awesome@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40"
integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w==
dependencies:
"@abp/core" "~4.4.3"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/font-awesome@~5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~4.4.3": "@abp/jquery-form@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies: dependencies:
"@abp/jquery" "~4.4.3" "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-form@~5.0.0-beta.1": "@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g== integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08"
integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w==
dependencies:
"@abp/jquery-validation" "~4.4.3"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
dependencies:
"@abp/jquery-validation" "~5.0.0-beta.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~4.4.3": "@abp/jquery-validation@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
"@abp/jquery" "~4.4.3"
jquery-validation "^1.19.2"
"@abp/jquery-validation@~5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~4.4.3": "@abp/jquery@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies: dependencies:
"@abp/core" "~4.4.3" "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0" jquery "~3.6.0"
"@abp/jquery@~5.0.0-beta.1": "@abp/lodash@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A== integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
"@abp/lodash@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb"
integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ==
dependencies:
"@abp/core" "~4.4.3"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/lodash@~5.0.0-beta.1": "@abp/luxon@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ== integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
"@abp/luxon@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0"
integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q==
dependencies:
"@abp/core" "~4.4.3"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/luxon@~5.0.0-beta.1": "@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA== integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98"
integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog==
dependencies:
"@abp/core" "~4.4.3"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
dependencies:
"@abp/core" "~5.0.0-beta.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~4.4.3": "@abp/select2@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies: dependencies:
"@abp/core" "~4.4.3" "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/select2@~5.0.0-beta.1": "@abp/sweetalert2@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw== integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
"@abp/sweetalert2@~5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
dependencies:
"@abp/core" "~5.0.0-beta.1"
sweetalert2 "^11.0.18" sweetalert2 "^11.0.18"
"@abp/sweetalert@~4.4.3": "@abp/timeago@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
"@abp/core" "~4.4.3"
sweetalert "^2.1.2"
"@abp/timeago@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383"
integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ==
dependencies: dependencies:
"@abp/jquery" "~4.4.3" "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/timeago@~5.0.0-beta.1": "@abp/toastr@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg== integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
"@abp/toastr@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105"
integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg==
dependencies:
"@abp/jquery" "~4.4.3"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/toastr@~5.0.0-beta.1": "@abp/uppy@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f" resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-5.0.0-beta.2.tgz#9b2dc0333cd2b35431a7287d60883d57796b63cf"
integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w== integrity sha512-oNRMMqgaFMMLDqPRaVOLER04iZ3Mx3h1kmfWOnEra3zopHqB/c3B3sOgaYYVzav2IeO/lz4YUuzLN6+/kZEIVw==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
toastr "^2.1.4"
"@abp/uppy@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-4.4.3.tgz#2ce6eae0be3875f5666a94480662412d31d5fb92"
integrity sha512-tMov0MgPLQnGiBRmAmyJHSlaUAIyyVWHGfXqdmeMn1fzlmqNkRDStaflO5ei94kXk+MvU8DLZXVaWRSfmai3fg==
dependencies:
"@abp/core" "~4.4.3"
uppy "^1.16.1" uppy "^1.16.1"
"@abp/utils@^4.4.3": "@abp/utils@^5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
"@abp/utils@^5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"
@ -672,21 +498,21 @@
"@uppy/utils" "^3.3.0" "@uppy/utils" "^3.3.0"
cuid "^2.1.1" cuid "^2.1.1"
"@volo/abp.aspnetcore.mvc.ui.theme.commercial@~4.4.3": "@volo/abp.aspnetcore.mvc.ui.theme.commercial@~5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@volo/abp.aspnetcore.mvc.ui.theme.commercial/-/abp.aspnetcore.mvc.ui.theme.commercial-4.4.3.tgz#1dd1c57b1ef4ebe4a8dddef522c6a98d4b039945" resolved "https://registry.yarnpkg.com/@volo/abp.aspnetcore.mvc.ui.theme.commercial/-/abp.aspnetcore.mvc.ui.theme.commercial-5.0.0-beta.2.tgz#6ac19bc128920b6f45996a2f0cddc36653188164"
integrity sha512-V5b8mw2vg+c+728LBmK4e/vCjKYV00qgFt3KCk790F2/zxVXWmKDRBQtbivgoTB46B01hVDGkLleXufkvOAh0g== integrity sha512-63gJgqexwdeSeiEHLmR4jxMv9+fXWjkNVjW29xAdtFMC+/kW07IMSOTZEA9bbGLOukOPxvN3OruEFc4n5v2HeA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
"@volo/account@~4.4.3": "@volo/account@^5.0.0-beta.2":
version "4.4.3" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@volo/account/-/account-4.4.3.tgz#a0f5f394d7551a894cf8dcbb0e20a4b2f13f2063" resolved "https://registry.yarnpkg.com/@volo/account/-/account-5.0.0-beta.2.tgz#681915f8a40cea1a95115fa17b231996fc33418a"
integrity sha512-GpzuisoDiTBlj/eH4KQogH6dzyTXDY23m1XiXh9wIZ2huR+SrrRkTtfB/kn3eMuBcUomVYKxTvu0ux3Sfrwc8w== integrity sha512-qjyK4ZnHPtnLSBfE/ox4O1lavZa/bQA4TOp6tDayuLKYaAM0zAG/pz0heBzgkTQzj5+LlAJx/IkIOI/0BhLjKA==
dependencies: dependencies:
"@abp/cropperjs" "~4.4.3" "@abp/cropperjs" "~5.0.0-beta.2"
"@abp/uppy" "~4.4.3" "@abp/uppy" "~5.0.0-beta.2"
"@volo/abp.aspnetcore.mvc.ui.theme.commercial" "~4.4.3" "@volo/abp.aspnetcore.mvc.ui.theme.commercial" "~5.0.0-beta.2"
abortcontroller-polyfill@^1.4.0: abortcontroller-polyfill@^1.4.0:
version "1.5.0" version "1.5.0"
@ -1368,11 +1194,6 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35" es5-ext "^0.10.35"
es6-symbol "^3.1.1" es6-symbol "^3.1.1"
es6-object-assign@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
es6-symbol@^3.1.1, es6-symbol@~3.1.3: es6-symbol@^3.1.1, es6-symbol@~3.1.3:
version "3.1.3" version "3.1.3"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
@ -2642,11 +2463,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
promise-polyfill@^6.0.2:
version "6.1.0"
resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057"
integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=
proper-lockfile@^2.0.1: proper-lockfile@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-2.0.1.tgz#159fb06193d32003f4b3691dd2ec1a634aa80d1d" resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-2.0.1.tgz#159fb06193d32003f4b3691dd2ec1a634aa80d1d"
@ -3073,14 +2889,6 @@ sweetalert2@^11.0.18:
resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.1.7.tgz#0ff2851eae77a76a3fe0ab289d3c32493e811b6d" resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.1.7.tgz#0ff2851eae77a76a3fe0ab289d3c32493e811b6d"
integrity sha512-7MHQVtKCTORfA9e58g9ZOfT3X58DkSBtvoCQJnqSHobXXb5C7aB8Yg/tAccTFnefCUBU41PoStjXMkzG3bNeig== integrity sha512-7MHQVtKCTORfA9e58g9ZOfT3X58DkSBtvoCQJnqSHobXXb5C7aB8Yg/tAccTFnefCUBU41PoStjXMkzG3bNeig==
sweetalert@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79"
integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==
dependencies:
es6-object-assign "^1.1.0"
promise-polyfill "^6.0.2"
through2-filter@^3.0.0: through2-filter@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"

57
apps/public-web/src/EShopOnAbp.PublicWeb/Dockerfile

@ -1,4 +1,53 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
COPY bin/Release/net6.0/publish/ app/ WORKDIR /app
WORKDIR /app EXPOSE 80
ENTRYPOINT ["dotnet", "EShopOnAbp.PublicWeb.dll"] EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
# It's important to keep lines from here down to "COPY . ." identical in all Dockerfiles
# to take advantage of Docker's build cache, to speed up local container builds
COPY "EShopOnAbp.sln" "EShopOnAbp.sln"
# Applications
COPY "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj" "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj"
COPY "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj" "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj"
# Shared
COPY "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj" "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj" "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj" "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj" "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj"
COPY "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj" "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj"
# Microservices
COPY "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj" "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj"
COPY "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj" "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj"
COPY *"services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj" "services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj"
COPY *"services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj" "services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj"
COPY *"services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj" "services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj"
COPY *"services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj" "services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj"
COPY *"services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj" "services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj"
# Gateways
COPY "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj" "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj"
COPY "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj" "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj"
COPY "NuGet.Config" "NuGet.Config"
RUN dotnet restore "EShopOnAbp.sln"
COPY . .
WORKDIR "/src/apps/public-web/src/EShopOnAbp.PublicWeb"
RUN dotnet publish -c Release -o /app
# Should be used after .net6 is out of preview for better performance
# RUN dotnet publish --no-restore -c Release -o /app
FROM build AS publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "EShopOnAbp.PublicWeb.dll"]

2
services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/Dockerfile → apps/public-web/src/EShopOnAbp.PublicWeb/Dockerfile.local

@ -1,4 +1,4 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0 FROM mcr.microsoft.com/dotnet/aspnet:6.0
COPY bin/Release/net6.0/publish/ app/ COPY bin/Release/net6.0/publish/ app/
WORKDIR /app WORKDIR /app
ENTRYPOINT ["dotnet", "EShopOnAbp.SaasService.HttpApi.Host.dll"] ENTRYPOINT ["dotnet", "EShopOnAbp.PublicWeb.dll"]

49
apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj

@ -3,14 +3,28 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.0-rc.*" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="Logs\**" /> <PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="5.0.0-beta.2" />
<Content Remove="Logs\**" /> <PackageReference Include="Volo.Abp.EventBus.RabbitMQ" Version="5.0.0-beta.2" />
<EmbeddedResource Remove="Logs\**" /> <PackageReference Include="Volo.Abp.Http.Client.IdentityModel.Web" Version="5.0.0-beta.2" />
<None Remove="Logs\**" /> <PackageReference Include="Volo.Abp.AspNetCore.Authentication.OpenIdConnect" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.Client" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.Account.HttpApi" Version="5.0.0-beta.2" />
<PackageReference Include="Volo.Abp.Account.HttpApi.Client" Version="5.0.0-beta.2" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Hosting.AspNetCore\EShopOnAbp.Shared.Hosting.AspNetCore.csproj" />
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Localization\EShopOnAbp.Shared.Localization.csproj" />
<!-- <ProjectReference Include="..\..\..\..\services\product\src\MyCompanyName.MyProjectName.ProductService.HttpApi.Client\MyCompanyName.MyProjectName.ProductService.HttpApi.Client.csproj" />-->
</ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Pages\**\*.js"> <Content Include="Pages\**\*.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
@ -21,29 +35,10 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.0-rc.1.21452.15" /> <Compile Remove="Logs\**" />
</ItemGroup> <Content Remove="Logs\**" />
<EmbeddedResource Remove="Logs\**" />
<ItemGroup> <None Remove="Logs\**" />
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="5.0.0-beta.1" />
<PackageReference Include="Volo.Abp.EventBus.RabbitMQ" Version="5.0.0-beta.1" />
<PackageReference Include="Volo.Abp.Http.Client.IdentityModel.Web" Version="5.0.0-beta.1" />
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.OpenIdConnect" Version="5.0.0-beta.1" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.Client" Version="5.0.0-beta.1" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="5.0.0-beta.1" />
<PackageReference Include="Volo.Abp.Account.HttpApi" Version="5.0.0-beta.1" />
<PackageReference Include="Volo.Abp.Account.HttpApi.Client" Version="5.0.0-beta.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Hosting.AspNetCore\EShopOnAbp.Shared.Hosting.AspNetCore.csproj" />
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Localization\EShopOnAbp.Shared.Localization.csproj" />
<!-- <ProjectReference Include="..\..\..\..\services\product\src\MyCompanyName.MyProjectName.ProductService.HttpApi.Client\MyCompanyName.MyProjectName.ProductService.HttpApi.Client.csproj" />-->
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="Pages\Products\Index.cshtml" />
</ItemGroup> </ItemGroup>
</Project> </Project>

5
apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs

@ -55,6 +55,7 @@ namespace EShopOnAbp.PublicWeb
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
@ -104,7 +105,8 @@ namespace EShopOnAbp.PublicWeb
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
context.Services context.Services
.AddDataProtection() .AddDataProtection()
.PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); .PersistKeysToStackExchangeRedis(redis, "EShopOnAbp-Protection-Keys")
.SetApplicationName("eShopOnAbp-PublicWeb");
Configure<AbpNavigationOptions>(options => Configure<AbpNavigationOptions>(options =>
{ {
@ -145,7 +147,6 @@ namespace EShopOnAbp.PublicWeb
app.UseRouting(); app.UseRouting();
// app.UseHttpMetrics(); // app.UseHttpMetrics();
app.UseAuthentication(); app.UseAuthentication();
app.UseMultiTenancy();
app.UseAbpSerilogEnrichers(); app.UseAbpSerilogEnrichers();
app.UseAuthorization(); app.UseAuthorization();
app.UseConfiguredEndpoints(endpoints => app.UseConfiguredEndpoints(endpoints =>

2
apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json

@ -38,7 +38,7 @@
"AuthServer": { "AuthServer": {
"Authority": "https://localhost:44330", "Authority": "https://localhost:44330",
"RequireHttpsMetadata": "true", "RequireHttpsMetadata": "true",
"ClientId": "EShopOnAbp_PublicWeb", "ClientId": "PublicWeb",
"ClientSecret": "1q2w3e*" "ClientSecret": "1q2w3e*"
} }
} }

2
apps/public-web/src/EShopOnAbp.PublicWeb/package.json

@ -3,6 +3,6 @@
"name": "EShopOnAbpPublicWeb", "name": "EShopOnAbpPublicWeb",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~5.0.0-beta.1" "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2"
} }
} }

4
apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/* /*
https://select2.org/troubleshooting/common-problems https://select2.org/troubleshooting/common-problems
*/ */
$.fn.modal.Constructor.prototype._enforceFocus = function () { }; if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

238
apps/public-web/src/EShopOnAbp.PublicWeb/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~5.0.0-beta.1": "@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg== integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1" "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1": "@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A== integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1" "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
"@abp/bootstrap" "~5.0.0-beta.1" "@abp/bootstrap" "~5.0.0-beta.2"
"@abp/bootstrap-datepicker" "~5.0.0-beta.1" "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
"@abp/datatables.net-bs4" "~5.0.0-beta.1" "@abp/datatables.net-bs4" "~5.0.0-beta.2"
"@abp/font-awesome" "~5.0.0-beta.1" "@abp/font-awesome" "~5.0.0-beta.2"
"@abp/jquery-form" "~5.0.0-beta.1" "@abp/jquery-form" "~5.0.0-beta.2"
"@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1" "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
"@abp/lodash" "~5.0.0-beta.1" "@abp/lodash" "~5.0.0-beta.2"
"@abp/luxon" "~5.0.0-beta.1" "@abp/luxon" "~5.0.0-beta.2"
"@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1" "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
"@abp/select2" "~5.0.0-beta.1" "@abp/select2" "~5.0.0-beta.2"
"@abp/sweetalert2" "~5.0.0-beta.1" "@abp/sweetalert2" "~5.0.0-beta.2"
"@abp/timeago" "~5.0.0-beta.1" "@abp/timeago" "~5.0.0-beta.2"
"@abp/toastr" "~5.0.0-beta.1" "@abp/toastr" "~5.0.0-beta.2"
"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1": "@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ== integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -41,145 +41,145 @@
merge-stream "^2.0.0" merge-stream "^2.0.0"
micromatch "^4.0.2" micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~5.0.0-beta.1": "@abp/bootstrap-datepicker@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ== integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~5.0.0-beta.1": "@abp/bootstrap@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A== integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0" bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1" bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~5.0.0-beta.1": "@abp/core@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739" resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg== integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies: dependencies:
"@abp/utils" "^5.0.0-beta.1" "@abp/utils" "^5.0.0-beta.2"
"@abp/datatables.net-bs4@~5.0.0-beta.1": "@abp/datatables.net-bs4@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ== integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies: dependencies:
"@abp/datatables.net" "~5.0.0-beta.1" "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~5.0.0-beta.1": "@abp/datatables.net@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw== integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~5.0.0-beta.1": "@abp/font-awesome@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow== integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~5.0.0-beta.1": "@abp/jquery-form@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g== integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1": "@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ== integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies: dependencies:
"@abp/jquery-validation" "~5.0.0-beta.1" "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~5.0.0-beta.1": "@abp/jquery-validation@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw== integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~5.0.0-beta.1": "@abp/jquery@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A== integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0" jquery "~3.6.0"
"@abp/lodash@~5.0.0-beta.1": "@abp/lodash@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ== integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~5.0.0-beta.1": "@abp/luxon@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA== integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1": "@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg== integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~5.0.0-beta.1": "@abp/select2@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw== integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~5.0.0-beta.1": "@abp/sweetalert2@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w== integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies: dependencies:
"@abp/core" "~5.0.0-beta.1" "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18" sweetalert2 "^11.0.18"
"@abp/timeago@~5.0.0-beta.1": "@abp/timeago@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg== integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~5.0.0-beta.1": "@abp/toastr@~5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w== integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies: dependencies:
"@abp/jquery" "~5.0.0-beta.1" "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^5.0.0-beta.1": "@abp/utils@^5.0.0-beta.2":
version "5.0.0-beta.1" version "5.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA== integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

68
build/build-images-locally.ps1

@ -0,0 +1,68 @@
param ($version='latest')
$currentFolder = $PSScriptRoot
$slnFolder = Join-Path $currentFolder "../"
$webAppFolder = Join-Path $slnFolder "apps/angular"
$authserverFolder = Join-Path $slnFolder "apps/auth-server/src/EShopOnAbp.AuthServer"
$publicWebFolder = Join-Path $slnFolder "apps/public-web/src/EShopOnAbp.PublicWeb"
$webGatewayFolder = Join-Path $slnFolder "gateways/web/src/EShopOnAbp.WebGateway"
$webPublicGatewayFolder = Join-Path $slnFolder "gateways/web-public/src/EShopOnAbp.WebPublicGateway"
$identityServiceFolder = Join-Path $slnFolder "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host"
$administrationServiceFolder = Join-Path $slnFolder "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host"
$saasServiceFolder = Join-Path $slnFolder "services/saas/src/EShopOnAbp.SaasService.HttpApi.Host"
### Angular WEB App(WWW)
Write-Host "*** BUILDING WEB (WWW) ****************" -ForegroundColor Green
Set-Location $webAppFolder
yarn
# ng build --prod
npm run build:prod
docker build -t eshoponabp/app-web:$version .
### AUTH-SERVER
Write-Host "*** BUILDING AUTH-SERVER ****************" -ForegroundColor Green
Set-Location $authserverFolder
dotnet publish -c Release
docker build -f Dockerfile.local -t eshoponabp/app-authserver:$version .
### PUBLIC-WEB
Write-Host "*** BUILDING WEB-PUBLIC ****************" -ForegroundColor Green
Set-Location $publicWebFolder
dotnet publish -c Release
docker build -f Dockerfile.local -t eshoponabp/app-publicweb:$version .
### WEB-GATEWAY
Write-Host "*** BUILDING WEB-GATEWAY ****************" -ForegroundColor Green
Set-Location $webGatewayFolder
dotnet publish -c Release
docker build -f Dockerfile.local -t eshoponabp/gateway-web:$version .
### PUBLICWEB-GATEWAY
Write-Host "*** BUILDING WEB-PUBLIC-GATEWAY ****************" -ForegroundColor Green
Set-Location $webPublicGatewayFolder
dotnet publish -c Release
docker build -f Dockerfile.local -t eshoponabp/gateway-web-public:$version .
### IDENTITY-SERVICE
Write-Host "*** BUILDING IDENTITY-SERVICE ****************" -ForegroundColor Green
Set-Location $identityServiceFolder
dotnet publish -c Release
docker build -f Dockerfile.local -t eshoponabp/service-identity:$version .
### ADMINISTRATION-SERVICE
Write-Host "*** BUILDING ADMINISTRATION-SERVICE ****************" -ForegroundColor Green
Set-Location $administrationServiceFolder
dotnet publish -c Release
docker build -f Dockerfile.local -t eshoponabp/service-administration:$version .
### SAAS-SERVICE
Write-Host "*** BUILDING SAAS-SERVICE ****************" -ForegroundColor Green
Set-Location $saasServiceFolder
dotnet publish -c Release
docker build -f Dockerfile.local -t eshoponabp/service-saas:$version .
### ALL COMPLETED
Write-Host "ALL COMPLETED" -ForegroundColor Green
Set-Location $currentFolder

64
build/build-images.ps1

@ -0,0 +1,64 @@
param ($version='1.0')
$currentFolder = $PSScriptRoot
$slnFolder = Join-Path $currentFolder "../"
$webAppFolder = Join-Path $slnFolder "apps/angular"
$authserverFolder = Join-Path $slnFolder "apps/auth-server/src/EShopOnAbp.AuthServer"
$publicWebFolder = Join-Path $slnFolder "apps/public-web/src/EShopOnAbp.PublicWeb"
$webGatewayFolder = Join-Path $slnFolder "gateways/web/src/EShopOnAbp.WebGateway"
$webPublicGatewayFolder = Join-Path $slnFolder "gateways/web-public/src/EShopOnAbp.WebPublicGateway"
$identityServiceFolder = Join-Path $slnFolder "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host"
$administrationServiceFolder = Join-Path $slnFolder "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host"
$saasServiceFolder = Join-Path $slnFolder "services/saas/src/EShopOnAbp.SaasService.HttpApi.Host"
Write-Host "===== BUILDING APPLICATIONS =====" -ForegroundColor Yellow
### Angular WEB App
Write-Host "*** BUILDING ANGULAR WEB APPLICATION ***" -ForegroundColor Green
Set-Location $webAppFolder
docker build -f "$webAppFolder/Dockerfile" -t eshoponabp/app-web:$version .
### AUTH-SERVER
Write-Host "**************** BUILDING AUTH-SERVER ****************" -ForegroundColor Green
Set-Location $slnFolder
docker build -f "$authserverFolder/Dockerfile" -t eshoponabp/app-authserver:$version .
### PUBLIC-WEB
Write-Host "**************** BUILDING WEB-PUBLIC ****************" -ForegroundColor Green
Set-Location $slnFolder
docker build -f "$publicWebFolder/Dockerfile" -t eshoponabp/app-publicweb:$version .
Write-Host "===== BUILDING GATEWAYS =====" -ForegroundColor Yellow
### WEB-GATEWAY
Write-Host "**************** BUILDING WEB-GATEWAY ****************" -ForegroundColor Green
Set-Location $slnFolder
docker build -f "$webGatewayFolder/Dockerfile" -t eshoponabp/gateway-web:$version .
### PUBLICWEB-GATEWAY
Write-Host "**************** BUILDING WEB-PUBLIC-GATEWAY ****************" -ForegroundColor Green
Set-Location $slnFolder
docker build -f "$webPublicGatewayFolder/Dockerfile" -t eshoponabp/gateway-web-public:$version .
Write-Host "===== BUILDING MICROSERVICES =====" -ForegroundColor Yellow
### IDENTITY-SERVICE
Write-Host "**************** BUILDING IDENTITY-SERVICE ****************" -ForegroundColor Green
Set-Location $slnFolder
docker build -f "$identityServiceFolder/Dockerfile" -t eshoponabp/service-identity:$version .
### ADMINISTRATION-SERVICE
Write-Host "**************** BUILDING ADMINISTRATION-SERVICE ****************" -ForegroundColor Green
Set-Location $slnFolder
docker build -f "$administrationServiceFolder/Dockerfile" -t eshoponabp/service-administration:$version .
### SAAS-SERVICE
Write-Host "**************** BUILDING SAAS-SERVICE ****************" -ForegroundColor Green
Set-Location $slnFolder
docker build -f "$saasServiceFolder/Dockerfile" -t eshoponabp/service-saas:$version .
### ALL COMPLETED
Write-Host "ALL COMPLETED" -ForegroundColor Green
Set-Location $currentFolder

BIN
docs/roadmap/Phase_1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 405 KiB

22
etc/k8s/README.md → etc/README.md

@ -4,7 +4,7 @@
* Install [NGINX ingress](https://kubernetes.github.io/ingress-nginx/deploy/) for k8s * Install [NGINX ingress](https://kubernetes.github.io/ingress-nginx/deploy/) for k8s
OR OR
* Install NGINX ingress using helm * Install NGINX ingress using helm
``` ```powershell
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update helm repo update
@ -17,17 +17,19 @@ helm install ingress-nginx ingress-nginx/ingress-nginx
* Add entries to the hosts file (in Windows: `C:\Windows\System32\drivers\etc\hosts`): * Add entries to the hosts file (in Windows: `C:\Windows\System32\drivers\etc\hosts`):
```` ````powershell
127.0.0.1 eshoponabp-public-web 127.0.0.1 eshop-st-web
127.0.0.1 eshoponabp-authserver 127.0.0.1 eshop-st-public-web
127.0.0.1 eshoponabp-identity 127.0.0.1 eshop-st-authserver
127.0.0.1 eshoponabp-administration 127.0.0.1 eshop-st-identity
127.0.0.1 eshoponabp-saas 127.0.0.1 eshop-st-administration
127.0.0.1 eshoponabp-public-webgateway 127.0.0.1 eshop-st-saas
127.0.0.1 eshop-st-gateway-web
127.0.0.1 eshop-st-gateway-web-public
```` ````
* Run `build-images.ps1` in the `scripts` directory. * Run `build-images.ps1` in the `scripts` directory.
* Run `deploy-staging.ps1` in the `helm-chart` directory. It is deployed with the `eventhub` namespace. * Run `deploy-staging.ps1` in the `helm-chart` directory. It is deployed with the `eshop` namespace.
* *You may wait ~30 seconds on first run for preparing the database*. * *You may wait ~30 seconds on first run for preparing the database*.
* Browse https://eshoponabp-public-web and https://eshoponabp-authserver * Browse https://eshop-st-public-web for public and https://eshop-st-web for web application
* Username: `admin`, password: `1q2w3E*`. * Username: `admin`, password: `1q2w3E*`.

4
etc/k8s/deploy-staging.ps1

@ -1,3 +1 @@
param ($version='latest') helm upgrade --install es-st eshoponabp --namespace eshop --create-namespace
helm upgrade --install eshoponabp eshoponabp --namespace eshop --create-namespace --set global.eshoponabpImageVersion=$version

52
etc/k8s/eshoponabp/charts/administration/templates/administration-deployment.yaml

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
- name: App__SelfUrl
value: "{{ .Values.config.selfUrl }}"
- name: RemoteServices__Default__BaseUrl
value: "{{ .Values.config.gatewayUrl }}"
- name: App__CorsOrigins
value: "{{ .Values.config.corsOrigins }}"
- name: IdentityClients__Default__Authority
value: "{{ .Values.synchedCommunication.authority }}"
- name: "ConnectionStrings__AdministrationService"
value: "{{ .Values.config.connectionStrings.administrationService }}"
- name: "ConnectionStrings__SaasService"
value: "{{ .Values.config.connectionStrings.saasService }}"
- name: "DOTNET_ENVIRONMENT"
value: "{{ .Values.config.dotnetEnv }}"
- name: "Redis__Configuration"
value: "{{ .Values.config.redisHost }}"
- name: "AuthServer__Authority"
value: "{{ .Values.config.authServer.authority }}"
- name: "AuthServer__RequireHttpsMetadata"
value: "{{ .Values.config.authServer.requireHttpsMetadata }}"
- name: "StringEncryption__DefaultPassPhrase"
value: "{{ .Values.config.stringEncryptionDefaultPassPhrase }}"
- name: "RabbitMQ__Connections__Default__HostName"
value: "{{ .Values.config.rabbitmqHost }}"
- name: "ElasticSearch__Url"
value: "{{ .Values.config.elasticsearchHost }}"
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}

10
etc/k8s/eshoponabp/charts/administration/templates/administration-ingress.yaml

@ -6,16 +6,16 @@ metadata:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "{{ .Values.global.nginxProxyBufferSize }}" nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "{{ .Values.global.nginxProxyBuffersNumber }}" nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
cert-manager.io/cluster-issuer: letsencrypt cert-manager.io/cluster-issuer: letsencrypt
spec: spec:
tls: tls:
- hosts: - hosts:
- {{ .Values.global.administrationService.domain }} - {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-{{ .Chart.Name }}-tls secretName: {{ .Values.ingress.tlsSecret }}
rules: rules:
- host: "{{ .Values.global.administrationService.domain }}" - host: "{{ .Values.ingress.host }}"
http: http:
paths: paths:
- path: / - path: /

31
etc/k8s/eshoponabp/charts/administration/templates/administration.yaml

@ -1,31 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.global.administrationService.containerImage }}:{{ .Values.global.eshoponabpImageVersion }}
imagePullPolicy: {{ .Values.global.imagePullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
{{ include "eshoponabp.global.env" . | indent 8 }}
- name: "ConnectionStrings__AdministrationService"
value: {{ .Values.global.administrationService.connString }}
- name: "ConnectionStrings__SaasService"
value: {{ .Values.global.saasService.connString }}
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}

33
etc/k8s/eshoponabp/charts/administration/values.yaml

@ -0,0 +1,33 @@
config:
selfUrl: # https://eshop-st-administration
gatewayUrl: # https://eshop-st-gateway-internal/
corsOrigins: # https://eshop-st-gateway-web,https://eshop-st-gateway-public-web,https://eshop-st-gateway-internal
connectionStrings:
administrationService: #
saasService: #
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: #
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
synchedCommunication:
grantType: # "client_credentials"
clientId: #
clientSecret: #
authority: https://eshop-st-authserver
scope: # "IdentityService"
ingress:
host: # eshop-st-administration
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/service-administration
tag: latest
pullPolicy: IfNotPresent
env: {}

49
etc/k8s/eshoponabp/charts/authserver/templates/authserver-deployment.yaml

@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
- name: App__SelfUrl
value: "{{ .Values.config.selfUrl }}"
- name: App__CorsOrigins
value: "{{ .Values.config.corsOrigins }}"
- name: App__RedirectAllowedUrls
value: "{{ .Values.config.allowedRedirectUrls }}"
- name: "ConnectionStrings__IdentityService"
value: "{{ .Values.config.identityService.connString }}"
- name: "ConnectionStrings__AdministrationService"
value: "{{ .Values.config.administrationService.connString }}"
- name: "ConnectionStrings__SaasService"
value: "{{ .Values.config.saasService.connString }}"
- name: "DOTNET_ENVIRONMENT"
value: "{{ .Values.config.dotnetEnv }}"
- name: "Redis__Configuration"
value: "{{ .Values.config.redisHost }}"
- name: "StringEncryption__DefaultPassPhrase"
value: "{{ .Values.config.stringEncryptionDefaultPassPhrase }}"
- name: "RabbitMQ__Connections__Default__HostName"
value: "{{ .Values.config.rabbitmqHost }}"
- name: "ElasticSearch__Url"
value: "{{ .Values.config.elasticsearchHost }}"
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}

12
etc/k8s/eshoponabp/charts/authserver/templates/authserver-ingress.yaml

@ -3,21 +3,21 @@ kind: Ingress
metadata: metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
annotations: annotations:
kubernetes.io/ingress.class: nginx kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "{{ .Values.global.nginxProxyBufferSize }}" nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "{{ .Values.global.nginxProxyBuffersNumber }}" nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
cert-manager.io/cluster-issuer: letsencrypt cert-manager.io/cluster-issuer: letsencrypt
nginx.ingress.kubernetes.io/configuration-snippet: | nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_input_headers "from-ingress: true"; more_set_input_headers "from-ingress: true";
spec: spec:
tls: tls:
- hosts: - hosts:
- {{ .Values.global.authServer.domain }} - {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-{{ .Chart.Name }}-tls secretName: {{ .Values.ingress.tlsSecret }}
rules: rules:
- host: "{{ .Values.global.authServer.domain }}" - host: "{{ .Values.ingress.host }}"
http: http:
paths: paths:
- path: / - path: /

30
etc/k8s/eshoponabp/charts/authserver/templates/authserver.yaml

@ -1,30 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.global.authServer.containerImage }}:{{ .Values.global.eshoponabpImageVersion }}
imagePullPolicy: {{ .Values.global.imagePullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
{{ include "eshoponabp.global.env" . | indent 8 }}
- name: "ConnectionStrings__IdentityService"
value: {{ .Values.global.identityService.connString }}
- name: "ConnectionStrings__AdministrationService"
value: {{ .Values.global.administrationService.connString }}
- name: "ConnectionStrings__SaasService"
value: {{ .Values.global.saasService.connString }}

27
etc/k8s/eshoponabp/charts/authserver/values.yaml

@ -0,0 +1,27 @@
config:
selfUrl: # https://eshop-st-authserver
corsOrigins: # https://eshop-st-identity,https://eshop-st-administration,https://eshop-st-saas
allowedRedirectUrls: https://eshop-st-web
identityService:
connString: #
administrationService:
connString: #
saasService:
connString: #
dotnetEnv: #
redisHost: #
rabbitmqHost: #
elasticsearchHost: #
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
ingress:
host: # eshop-st-authserver
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/app-authserver
tag: latest
pullPolicy: IfNotPresent
env: {}

17
etc/k8s/eshoponabp/charts/consul/templates/consul-service.yaml

@ -1,17 +0,0 @@
apiVersion: v1
kind: Service
metadata:
labels:
name: {{ .Release.Name }}-{{ .Chart.Name }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
type: ClusterIP
ports:
- name: consul-1
protocol: TCP
port: 8500
- name: consul-2
protocol: TCP
port: 8600
selector:
app: {{ .Release.Name }}-{{ .Chart.Name }}

24
etc/k8s/eshoponabp/charts/consul/templates/consul.yaml

@ -1,24 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
replicas: 1
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: consul
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: consul-1
protocol: TCP
containerPort: 8500
- name: consul-2
protocol: TCP
containerPort: 8600

0
etc/k8s/eshoponabp/charts/consul/values.yaml

6
etc/k8s/eshoponabp/charts/gateway-web-public/Chart.yaml

@ -0,0 +1,6 @@
apiVersion: v2
name: gateway-web-public
appVersion: "1.0"
description: eShopOnAbp Web Public Gateway Application
version: 1.0.0
type: application

74
etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-configmap.yaml

@ -0,0 +1,74 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-configmap
data:
appsettings.json: |-
{
"Routes": [
{
"ServiceKey": "Identity Service",
"DownstreamPathTemplate": "/api/account/{everything}",
"DownstreamScheme": "{{ .Values.reRoutes.identityService.schema }}",
"DownstreamHostAndPorts": [
{
"Host": "{{ .Values.reRoutes.identityService.host }}",
"Port": {{ .Values.reRoutes.identityService.port }}
}
],
"UpstreamPathTemplate": "/api/account/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ]
},
{
"ServiceKey": "Administration Service",
"DownstreamPathTemplate": "/api/abp/{everything}",
"DownstreamScheme": "{{ .Values.reRoutes.administrationService.schema }}",
"DownstreamHostAndPorts": [
{
"Host": "{{ .Values.reRoutes.administrationService.host }}",
"Port": "{{ .Values.reRoutes.administrationService.port }}",
}
],
"UpstreamPathTemplate": "/api/abp/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ]
},
{
"ServiceKey": "Catalog Service",
"DownstreamPathTemplate": "/api/catalog/{everything}",
"DownstreamScheme": "{{ .Values.reRoutes.catalogService.schema }}",
"DownstreamHostAndPorts": [
{
"Host": "{{ .Values.reRoutes.catalogService.host }}",
"Port": "{{ .Values.reRoutes.catalogService.port }}",
}
],
"UpstreamPathTemplate": "/api/catalog/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ]
},
{
"ServiceKey": "Basket Service",
"DownstreamPathTemplate": "/api/basket/{everything}",
"DownstreamScheme": "{{ .Values.reRoutes.basketService.schema }}",
"DownstreamHostAndPorts": [
{
"Host": "{{ .Values.reRoutes.basketService.host }}",
"Port": "{{ .Values.reRoutes.basketService.port }}",
}
],
"UpstreamPathTemplate": "/api/basket/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ]
},
{
"ServiceKey": "Ordering Service",
"DownstreamPathTemplate": "/api/ordering/{everything}",
"DownstreamScheme": "{{ .Values.reRoutes.orderService.schema }}",
"DownstreamHostAndPorts": [
{
"Host": "{{ .Values.reRoutes.orderService.host }}",
"Port": "{{ .Values.reRoutes.orderService.port }}",
}
],
"UpstreamPathTemplate": "/api/ordering/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ]
}]
}

52
etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-deployment.yaml

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
volumeMounts:
- name: config-volume
mountPath: /app/appsettings.json
subPath: appsettings.json
env:
- name: App__SelfUrl
value: "{{ .Values.config.selfUrl }}"
- name: GlobalConfiguration__BaseUrl
value: "{{ .Values.config.globalConfigurationBaseUrl }}"
- name: "DOTNET_ENVIRONMENT"
value: "{{ .Values.config.dotnetEnv }}"
- name: "Redis__Configuration"
value: "{{ .Values.config.redisHost }}"
- name: "RabbitMQ__Connections__Default__HostName"
value: "{{ .Values.config.rabbitmqHost }}"
- name: "AuthServer__Authority"
value: "{{ .Values.config.authServer.authority }}"
- name: "AuthServer__RequireHttpsMetadata"
value: "{{ .Values.config.authServer.requireHttpsMetadata }}"
- name: "ElasticSearch__Url"
value: "{{ .Values.config.elasticsearchHost }}"
- name: "StringEncryption__DefaultPassPhrase"
value: "{{ .Values.config.stringEncryptionDefaultPassPhrase }}"
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}
volumes:
- name: config-volume
configMap:
name: {{ .Release.Name }}-{{ .Chart.Name }}-configmap

37
etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-ingress.yaml

@ -0,0 +1,37 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
cert-manager.io/cluster-issuer: letsencrypt
{{- if eq .Release.Name "es-az" }}
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
{{- end }}
spec:
tls:
- hosts:
- {{ .Values.ingress.host }}
{{- if eq .Release.Name "es-az" }}
- {{ print "www." .Values.global.ingress.host }}
{{- end }}
secretName: {{ .Values.ingress.tlsSecret }}
rules:
{{- if eq .Release.Name "es-az" }}
- host: "{{ print "www." .Values.ingress.host }}"
{{- else }}
- host: "{{ .Values.ingress.host }}"
{{- end }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}-{{ .Chart.Name }}
port:
number: 80

0
etc/k8s/eshoponabp/charts/public-webgateway/templates/public-webgateway-service.yaml → etc/k8s/eshoponabp/charts/gateway-web-public/templates/gateway-web-public-service.yaml

45
etc/k8s/eshoponabp/charts/gateway-web-public/values.yaml

@ -0,0 +1,45 @@
config:
selfUrl: https://eshop-st-gateway-public-web
globalConfigurationBaseUrl: http://eshop-st-gateway-public-web
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: #
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
reRoutes:
identityService:
schema: http
host: eshop-st-identity
port: 80
administrationService:
schema: http
host: eshop-st-administration
port: 80
catalogService:
schema: http
host: eshop-st-catalog
port: 80
basketService:
schema: http
host: eshop-st-basket
port: 80
orderService:
schema: http
host: eshop-st-order
port: 80
ingress:
host: eshop-st-gateway-web-public
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/gateway-web-public
tag: latest
pullPolicy: IfNotPresent
env: {}

4
etc/k8s/eshoponabp/charts/consul/Chart.yaml → etc/k8s/eshoponabp/charts/gateway-web/Chart.yaml

@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: consul name: gateway-web
appVersion: "1.0" appVersion: "1.0"
description: Runs Consul instance description: eShopOnAbp Web Gateway Application
version: 1.0.0 version: 1.0.0
type: application type: application

90
gateways/internal/src/EShopOnAbp.InternalGateway/appsettings.json → etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-configmap.yaml

@ -1,24 +1,19 @@
{ apiVersion: v1
"App": { kind: ConfigMap
"SelfUrl": "https://localhost:44371" metadata:
}, name: {{ .Release.Name }}-{{ .Chart.Name }}-configmap
"Logging": { data:
"LogLevel": { appsettings.json: |-
"Default": "Information", {
"Microsoft": "Warning", "Routes": [
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"Routes": [
{ {
"ServiceKey": "Identity Service", "ServiceKey": "Identity Service",
"DownstreamPathTemplate": "/api/identity/{everything}", "DownstreamPathTemplate": "/api/identity/{everything}",
"DownstreamScheme": "https", "DownstreamScheme": "{{ .Values.reRoutes.identityService.schema }}",
"DownstreamHostAndPorts": [ "DownstreamHostAndPorts": [
{ {
"Host": "localhost", "Host": "{{ .Values.reRoutes.identityService.host }}",
"Port": 44351 "Port": {{ .Values.reRoutes.identityService.port }}
} }
], ],
"UpstreamPathTemplate": "/api/identity/{everything}", "UpstreamPathTemplate": "/api/identity/{everything}",
@ -27,11 +22,11 @@
{ {
"ServiceKey": "Identity Service", "ServiceKey": "Identity Service",
"DownstreamPathTemplate": "/api/account/{everything}", "DownstreamPathTemplate": "/api/account/{everything}",
"DownstreamScheme": "https", "DownstreamScheme": "{{ .Values.reRoutes.identityService.schema }}",
"DownstreamHostAndPorts": [ "DownstreamHostAndPorts": [
{ {
"Host": "localhost", "Host": "{{ .Values.reRoutes.identityService.host }}",
"Port": 44351 "Port": {{ .Values.reRoutes.identityService.port }}
} }
], ],
"UpstreamPathTemplate": "/api/account/{everything}", "UpstreamPathTemplate": "/api/account/{everything}",
@ -40,11 +35,11 @@
{ {
"ServiceKey": "Saas Service", "ServiceKey": "Saas Service",
"DownstreamPathTemplate": "/api/saas/{everything}", "DownstreamPathTemplate": "/api/saas/{everything}",
"DownstreamScheme": "https", "DownstreamScheme": "{{ .Values.reRoutes.saasService.schema }}",
"DownstreamHostAndPorts": [ "DownstreamHostAndPorts": [
{ {
"Host": "localhost", "Host": "{{ .Values.reRoutes.saasService.host }}",
"Port": 44352 "Port": {{ .Values.reRoutes.saasService.port }}
} }
], ],
"UpstreamPathTemplate": "/api/saas/{everything}", "UpstreamPathTemplate": "/api/saas/{everything}",
@ -53,11 +48,11 @@
{ {
"ServiceKey": "Administration Service", "ServiceKey": "Administration Service",
"DownstreamPathTemplate": "/api/abp/{everything}", "DownstreamPathTemplate": "/api/abp/{everything}",
"DownstreamScheme": "https", "DownstreamScheme": "{{ .Values.reRoutes.administrationService.schema }}",
"DownstreamHostAndPorts": [ "DownstreamHostAndPorts": [
{ {
"Host": "localhost", "Host": "{{ .Values.reRoutes.administrationService.host }}",
"Port": 44353 "Port": "{{ .Values.reRoutes.administrationService.port }}",
} }
], ],
"UpstreamPathTemplate": "/api/abp/{everything}", "UpstreamPathTemplate": "/api/abp/{everything}",
@ -66,11 +61,11 @@
{ {
"ServiceKey": "Administration Service", "ServiceKey": "Administration Service",
"DownstreamPathTemplate": "/api/feature-management/{everything}", "DownstreamPathTemplate": "/api/feature-management/{everything}",
"DownstreamScheme": "https", "DownstreamScheme": "{{ .Values.reRoutes.administrationService.schema }}",
"DownstreamHostAndPorts": [ "DownstreamHostAndPorts": [
{ {
"Host": "localhost", "Host": "{{ .Values.reRoutes.administrationService.host }}",
"Port": 44353 "Port": "{{ .Values.reRoutes.administrationService.port }}",
} }
], ],
"UpstreamPathTemplate": "/api/feature-management/{everything}", "UpstreamPathTemplate": "/api/feature-management/{everything}",
@ -79,11 +74,11 @@
{ {
"ServiceKey": "Administration Service", "ServiceKey": "Administration Service",
"DownstreamPathTemplate": "/api/permission-management/{everything}", "DownstreamPathTemplate": "/api/permission-management/{everything}",
"DownstreamScheme": "https", "DownstreamScheme": "{{ .Values.reRoutes.administrationService.schema }}",
"DownstreamHostAndPorts": [ "DownstreamHostAndPorts": [
{ {
"Host": "localhost", "Host": "{{ .Values.reRoutes.administrationService.host }}",
"Port": 44353 "Port": "{{ .Values.reRoutes.administrationService.port }}",
} }
], ],
"UpstreamPathTemplate": "/api/permission-management/{everything}", "UpstreamPathTemplate": "/api/permission-management/{everything}",
@ -92,37 +87,14 @@
{ {
"ServiceKey": "Administration Service", "ServiceKey": "Administration Service",
"DownstreamPathTemplate": "/api/setting-management/{everything}", "DownstreamPathTemplate": "/api/setting-management/{everything}",
"DownstreamScheme": "https", "DownstreamScheme": "{{ .Values.reRoutes.administrationService.schema }}",
"DownstreamHostAndPorts": [ "DownstreamHostAndPorts": [
{ {
"Host": "localhost", "Host": "{{ .Values.reRoutes.administrationService.host }}",
"Port": 44353 "Port": "{{ .Values.reRoutes.administrationService.port }}",
} }
], ],
"UpstreamPathTemplate": "/api/setting-management/{everything}", "UpstreamPathTemplate": "/api/setting-management/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ]
}, }]
{ }
"ServiceKey": "Payment Service",
"DownstreamPathTemplate": "/api/payment/{everything}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 44357
}
],
"UpstreamPathTemplate": "/api/payment/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ]
}
],
"GlobalConfiguration": {
"BaseUrl": "https://localhost:44371"
},
"Redis": {
"Configuration": "localhost:6379"
},
"ElasticSearch": {
"Url": "http://localhost:9200"
}
}

54
etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-deployment.yaml

@ -0,0 +1,54 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
volumeMounts:
- name: config-volume
mountPath: /app/appsettings.json
subPath: appsettings.json
env:
- name: App__SelfUrl
value: "{{ .Values.config.selfUrl }}"
- name: App__CorsOrigins
value: "{{ .Values.config.corsOrigins }}"
- name: GlobalConfiguration__BaseUrl
value: "{{ .Values.config.globalConfigurationBaseUrl }}"
- name: "DOTNET_ENVIRONMENT"
value: "{{ .Values.config.dotnetEnv }}"
- name: "Redis__Configuration"
value: "{{ .Values.config.redisHost }}"
- name: "RabbitMQ__Connections__Default__HostName"
value: "{{ .Values.config.rabbitmqHost }}"
- name: "AuthServer__Authority"
value: "{{ .Values.config.authServer.authority }}"
- name: "AuthServer__RequireHttpsMetadata"
value: "{{ .Values.config.authServer.requireHttpsMetadata }}"
- name: "ElasticSearch__Url"
value: "{{ .Values.config.elasticsearchHost }}"
- name: "StringEncryption__DefaultPassPhrase"
value: "{{ .Values.config.stringEncryptionDefaultPassPhrase }}"
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}
volumes:
- name: config-volume
configMap:
name: {{ .Release.Name }}-{{ .Chart.Name }}-configmap

37
etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-ingress.yaml

@ -0,0 +1,37 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
cert-manager.io/cluster-issuer: letsencrypt
{{- if eq .Release.Name "es-az" }}
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
{{- end }}
spec:
tls:
- hosts:
- {{ .Values.ingress.host }}
{{- if eq .Release.Name "es-az" }}
- {{ print "www." .Values.ingress.host }}
{{- end }}
secretName: {{ .Values.ingress.tlsSecret }}
rules:
{{- if eq .Release.Name "es-az" }}
- host: "{{ print "www." .Values.ingress.host }}"
{{- else }}
- host: "{{ .Values.ingress.host }}"
{{- end }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}-{{ .Chart.Name }}
port:
number: 80

14
etc/k8s/eshoponabp/charts/gateway-web/templates/gateway-web-service.yaml

@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
labels:
name: {{ .Release.Name }}-{{ .Chart.Name }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
ports:
- name: "80"
port: 80
- name: "443"
port: 443
selector:
app: {{ .Release.Name }}-{{ .Chart.Name }}

35
etc/k8s/eshoponabp/charts/gateway-web/values.yaml

@ -0,0 +1,35 @@
config:
selfUrl: # https://eshop-st-gateway-web
corsOrigins: # localhost:4200
globalConfigurationBaseUrl: # http://eshop-st-gateway-web
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: #
redisHost: #
rabbitmqHost: #
elasticsearchHost: #
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
reRoutes:
identityService:
schema: http
host: eshop-st-identity
port: 80
administrationService:
schema: http
host: eshop-st-administration
port: 80
saasService:
schema: # http
host: # eshop-st-saas
port: # 80
ingress:
host: # eshop-st-gateway-web
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/gateway-web
tag: latest
pullPolicy: IfNotPresent
env: {}

67
etc/k8s/eshoponabp/charts/identity/templates/identity-deployment.yaml

@ -0,0 +1,67 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
- name: App__SelfUrl
value: "{{ .Values.config.selfUrl }}"
- name: App__CorsOrigins
value: "{{ .Values.config.corsOrigins }}"
- name: "ConnectionStrings__IdentityService"
value: {{ .Values.config.connectionStrings.identityService }}
- name: "ConnectionStrings__AdministrationService"
value: {{ .Values.config.connectionStrings.administrationService }}
- name: "ConnectionStrings__SaasService"
value: {{ .Values.config.connectionStrings.saasService }}
- name: "DOTNET_ENVIRONMENT"
value: "{{ .Values.config.dotnetEnv }}"
- name: "Redis__Configuration"
value: "{{ .Values.config.redisHost }}"
- name: "RabbitMQ__Connections__Default__HostName"
value: "{{ .Values.config.rabbitmqHost }}"
- name: "ElasticSearch__Url"
value: "{{ .Values.config.elasticsearchHost }}"
- name: "AuthServer__Authority"
value: "{{ .Values.config.authServer.authority }}"
- name: "AuthServer__RequireHttpsMetadata"
value: "{{ .Values.config.authServer.requireHttpsMetadata }}"
- name: "StringEncryption__DefaultPassPhrase"
value: "{{ .Values.config.stringEncryptionDefaultPassPhrase }}"
- name: "IdentityServerClients__Web__RootUrl"
value: {{ .Values.identityServerClients.webRootUrl }}
- name: "IdentityServerClients__PublicWeb__RootUrl"
value: {{ .Values.identityServerClients.publicWebRootUrl }}
- name: "IdentityServerClients__IdentityService__RootUrl"
value: {{ .Values.identityServerClients.identityServiceRootUrl }}
- name: "IdentityServerClients__SaasService__RootUrl"
value: {{ .Values.identityServerClients.saasServiceRootUrl }}
- name: "IdentityServerClients__AdministrationService__RootUrl"
value: {{ .Values.identityServerClients.administrationServiceRootUrl }}
- name: "IdentityServerClients__InternalGateway__RootUrl"
value: {{ .Values.identityServerClients.webRootUrl }}
- name: "IdentityServerClients__PublicWebGateway__RootUrl"
value: {{ .Values.identityServerClients.publicWebRootUrl }}
- name: "IdentityServerClients__WebGateway__RootUrl"
value: {{ .Values.identityServerClients.webGatewayRootUrl }}
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}

10
etc/k8s/eshoponabp/charts/identity/templates/identity-ingress.yaml

@ -6,16 +6,16 @@ metadata:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "{{ .Values.global.nginxProxyBufferSize }}" nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "{{ .Values.global.nginxProxyBuffersNumber }}" nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
cert-manager.io/cluster-issuer: letsencrypt cert-manager.io/cluster-issuer: letsencrypt
spec: spec:
tls: tls:
- hosts: - hosts:
- {{ .Values.global.identityService.domain }} - {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-{{ .Chart.Name }}-tls secretName: {{ .Values.ingress.tlsSecret }}
rules: rules:
- host: "{{ .Values.global.identityService.domain }}" - host: "{{ .Values.ingress.host }}"
http: http:
paths: paths:
- path: / - path: /

31
etc/k8s/eshoponabp/charts/identity/templates/identity.yaml

@ -1,31 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.global.identityService.containerImage }}:{{ .Values.global.eshoponabpImageVersion }}
imagePullPolicy: {{ .Values.global.imagePullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
{{ include "eshoponabp.global.env" . | indent 8 }}
- name: "ConnectionStrings__IdentityService"
value: {{ .Values.global.identityService.connString }}
- name: "ConnectionStrings__AdministrationService"
value: {{ .Values.global.administrationService.connString }}
- name: "ConnectionStrings__SaasService"
value: {{ .Values.global.saasService.connString }}

37
etc/k8s/eshoponabp/charts/identity/values.yaml

@ -0,0 +1,37 @@
config:
selfUrl: # https://eshop-st-identity
corsOrigins: # https://eshop-st-gateway-web,https://eshop-st-gateway-public-web,https://eshop-st-gateway-internal
connectionStrings:
identityService: #
administrationService: #
saasService: #
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
# Seeded clients
identityServerClients:
webRootUrl: #
publicWebRootUrl: #
webGatewayRootUrl: #
publicWebGatewayRootUrl: #
identityServiceRootUrl: #
administrationServiceRootUrl: #
saasServiceRootUrl: #
ingress:
host: eshop-st-identity
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/service-identity
tag: latest
pullPolicy: IfNotPresent
env: {}

44
etc/k8s/eshoponabp/charts/public-web/templates/public-web-deployment.yaml

@ -0,0 +1,44 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
- name: App__SelfUrl
value: {{ .Values.config.selfUrl}}
- name: RemoteServices__Default__BaseUrl
value: {{ .Values.config.gatewayUrl}}
- name: "AuthServer__Authority"
value: {{ .Values.config.authServer.authority }}
- name: "AuthServer__RequireHttpsMetadata"
value: "{{ .Values.config.authServer.requireHttpsMetadata }}"
- name: "DOTNET_ENVIRONMENT"
value: {{ .Values.config.dotnetEnv }}
- name: "Redis__Configuration"
value: {{ .Values.config.redisHost }}
- name: "StringEncryption__DefaultPassPhrase"
value: {{ .Values.config.stringEncryptionDefaultPassPhrase }}
- name: "RabbitMQ__Connections__Default__HostName"
value: {{ .Values.config.rabbitmqHost }}
- name: "ElasticSearch__Url"
value: {{ .Values.config.elasticsearchHost }}
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}

24
etc/k8s/eshoponabp/charts/public-web/templates/public-web-ingress.yaml

@ -3,28 +3,28 @@ kind: Ingress
metadata: metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
annotations: annotations:
kubernetes.io/ingress.class: nginx kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "{{ .Values.global.nginxProxyBufferSize }}" nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "{{ .Values.global.nginxProxyBuffersNumber }}" nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
{{- if eq .Release.Name "eh-az" }} cert-manager.io/cluster-issuer: letsencrypt
{{- if eq .Release.Name "es-az" }}
nginx.ingress.kubernetes.io/from-to-www-redirect: "true" nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
{{- end }} {{- end }}
cert-manager.io/cluster-issuer: letsencrypt
spec: spec:
tls: tls:
- hosts: - hosts:
- {{ .Values.global.publicWeb.domain }} - {{ .Values.ingress.host }}
{{- if eq .Release.Name "eh-az" }} {{- if eq .Release.Name "es-az" }}
- {{ print "www." .Values.global.publicWeb.domain }} - {{ print "www." .Values.ingress.host }}
{{- end }} {{- end }}
secretName: {{ .Release.Name }}-{{ .Chart.Name }}-tls secretName: {{ .Values.ingress.tlsSecret }}
rules: rules:
{{- if eq .Release.Name "eh-az" }} {{- if eq .Release.Name "es-az" }}
- host: "{{ print "www." .Values.global.publicWeb.domain }}" - host: "{{ print "www." .Values.ingress.host }}"
{{- else }} {{- else }}
- host: "{{ .Values.global.publicWeb.domain }}" - host: "{{ .Values.ingress.host }}"
{{- end }} {{- end }}
http: http:
paths: paths:

22
etc/k8s/eshoponabp/charts/public-web/values.yaml

@ -0,0 +1,22 @@
config:
selfUrl: https://eshop-st-public-web
gatewayUrl: "http://eshop-st-gateway-web-public/"
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
ingress:
host: # eshop-st-public-web
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/app-publicweb
tag: latest
pullPolicy: IfNotPresent
env: {}

6
etc/k8s/eshoponabp/charts/public-webgateway/Chart.yaml

@ -1,6 +0,0 @@
apiVersion: v2
name: public-webgateway
appVersion: "1.0"
description: eShopOnAbp Public Web Gateway Application
version: 1.0.0
type: application

37
etc/k8s/eshoponabp/charts/public-webgateway/templates/public-webgateway-ingress.yaml

@ -1,37 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "{{ .Values.global.nginxProxyBufferSize }}"
nginx.ingress.kubernetes.io/proxy-buffers-number: "{{ .Values.global.nginxProxyBuffersNumber }}"
{{- if eq .Release.Name "eh-az" }}
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
{{- end }}
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- {{ .Values.global.publicWebGateway.domain }}
{{- if eq .Release.Name "eh-az" }}
- {{ print "www." .Values.global.publicWebGateway.domain }}
{{- end }}
secretName: {{ .Release.Name }}-{{ .Chart.Name }}-tls
rules:
{{- if eq .Release.Name "eh-az" }}
- host: "{{ print "www." .Values.global.publicWebGateway.domain }}"
{{- else }}
- host: "{{ .Values.global.publicWebGateway.domain }}"
{{- end }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}-{{ .Chart.Name }}
port:
number: 80

24
etc/k8s/eshoponabp/charts/public-webgateway/templates/public-webgateway.yaml

@ -1,24 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- image: {{ .Values.global.publicWebGateway.containerImage }}:{{ .Values.global.eshoponabpImageVersion }}
imagePullPolicy: {{ .Values.global.imagePullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
env:
{{ include "eshoponabp.global.env" . | indent 8 }}

0
etc/k8s/eshoponabp/charts/public-webgateway/values.yaml

10
etc/k8s/eshoponabp/charts/saas/templates/saas-ingress.yaml

@ -6,16 +6,16 @@ metadata:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "{{ .Values.global.nginxProxyBufferSize }}" nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "{{ .Values.global.nginxProxyBuffersNumber }}" nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
cert-manager.io/cluster-issuer: letsencrypt cert-manager.io/cluster-issuer: letsencrypt
spec: spec:
tls: tls:
- hosts: - hosts:
- {{ .Values.global.identityService.domain }} - {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-{{ .Chart.Name }}-tls secretName: {{ .Values.ingress.tlsSecret }}
rules: rules:
- host: "{{ .Values.global.identityService.domain }}" - host: "{{ .Values.ingress.host }}"
http: http:
paths: paths:
- path: / - path: /

30
etc/k8s/eshoponabp/charts/saas/templates/saas.yaml

@ -12,8 +12,8 @@ spec:
app: {{ .Release.Name }}-{{ .Chart.Name }} app: {{ .Release.Name }}-{{ .Chart.Name }}
spec: spec:
containers: containers:
- image: {{ .Values.global.saasService.containerImage }}:{{ .Values.global.eshoponabpImageVersion }} - image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.global.imagePullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }} name: {{ .Release.Name }}-{{ .Chart.Name }}
ports: ports:
- name: http - name: http
@ -21,9 +21,29 @@ spec:
- name: https - name: https
containerPort: 443 containerPort: 443
env: env:
{{ include "eshoponabp.global.env" . | indent 8 }} - name: App__SelfUrl
value: "{{ .Values.config.selfUrl }}"
- name: App__CorsOrigins
value: "{{ .Values.config.corsOrigins }}"
- name: "ConnectionStrings__AdministrationService" - name: "ConnectionStrings__AdministrationService"
value: {{ .Values.global.administrationService.connString }} value: {{ .Values.config.connectionStrings.administrationService }}
- name: "ConnectionStrings__SaasService" - name: "ConnectionStrings__SaasService"
value: {{ .Values.global.saasService.connString }} value: {{ .Values.config.connectionStrings.saasService }}
- name: "DOTNET_ENVIRONMENT"
value: "{{ .Values.config.dotnetEnv }}"
- name: "Redis__Configuration"
value: "{{ .Values.config.redisHost }}"
- name: "RabbitMQ__Connections__Default__HostName"
value: "{{ .Values.config.rabbitmqHost }}"
- name: "ElasticSearch__Url"
value: "{{ .Values.config.elasticsearchHost }}"
- name: "AuthServer__Authority"
value: "{{ .Values.config.authServer.authority }}"
- name: "AuthServer__RequireHttpsMetadata"
value: "{{ .Values.config.authServer.requireHttpsMetadata }}"
- name: "StringEncryption__DefaultPassPhrase"
value: "{{ .Values.config.stringEncryptionDefaultPassPhrase }}"
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}

25
etc/k8s/eshoponabp/charts/saas/values.yaml

@ -0,0 +1,25 @@
config:
selfUrl: https://eshop-st-saas
corsOrigins: https://eshop-st-gateway-web,https://eshop-st-gateway-public-web,https://eshop-st-gateway-internal
connectionStrings:
administrationService: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Administration;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
saasService: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Saas;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
ingress:
host: eshop-st-saas
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/service-saas
tag: latest
pullPolicy: IfNotPresent
env: {}

4
etc/k8s/eshoponabp/charts/sqlserver/templates/sqlserver.yaml

@ -16,7 +16,7 @@ spec:
containers: containers:
- image: mcr.microsoft.com/mssql/server - image: mcr.microsoft.com/mssql/server
name: {{ .Release.Name }}-{{ .Chart.Name }} name: {{ .Release.Name }}-{{ .Chart.Name }}
{{- if eq .Release.Name "eh-az" }} {{- if eq .Release.Name "es-az" }}
volumeMounts: volumeMounts:
- mountPath: "/var/opt/mssql" - mountPath: "/var/opt/mssql"
name: {{ .Release.Name }}-{{ .Chart.Name }}-database-volume name: {{ .Release.Name }}-{{ .Chart.Name }}-database-volume
@ -30,7 +30,7 @@ spec:
value: "myPassw@rd" value: "myPassw@rd"
- name: ACCEPT_EULA - name: ACCEPT_EULA
value: "Y" value: "Y"
{{- if eq .Release.Name "eh-az" }} {{- if eq .Release.Name "es-az" }}
volumeClaimTemplates: volumeClaimTemplates:
- metadata: - metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-database-volume name: {{ .Release.Name }}-{{ .Chart.Name }}-database-volume

6
etc/k8s/eshoponabp/charts/web/Chart.yaml

@ -0,0 +1,6 @@
apiVersion: v2
name: web
appVersion: "1.0"
description: eShopOnAbp BackOffice Web Application
version: 1.0.0
type: application

14
etc/k8s/eshoponabp/charts/public-web/templates/public-web.yaml → etc/k8s/eshoponabp/charts/web/templates/web-deployment.yaml

@ -12,8 +12,8 @@ spec:
app: {{ .Release.Name }}-{{ .Chart.Name }} app: {{ .Release.Name }}-{{ .Chart.Name }}
spec: spec:
containers: containers:
- image: {{ .Values.global.publicWeb.containerImage }}:{{ .Values.global.eshoponabpImageVersion }} - image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.global.imagePullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
name: {{ .Release.Name }}-{{ .Chart.Name }} name: {{ .Release.Name }}-{{ .Chart.Name }}
ports: ports:
- name: http - name: http
@ -21,6 +21,10 @@ spec:
- name: https - name: https
containerPort: 443 containerPort: 443
env: env:
{{ include "eshoponabp.global.env" . | indent 8 }} - name: BASE_URL
- name: "RemoteServices__Default__BaseUrl" value: {{ .Values.config.selfUrl}}
value: {{ .Values.global.publicWeb.remoteServiceUrl }} - name: API_URL
value: {{ .Values.config.gatewayUrl}}
{{- if .Values.env }}
{{ toYaml .Values.env | indent 8 }}
{{- end }}

37
etc/k8s/eshoponabp/charts/web/templates/web-ingress.yaml

@ -0,0 +1,37 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: 32k
nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
cert-manager.io/cluster-issuer: letsencrypt
{{- if eq .Release.Name "es-az" }}
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
{{- end }}
spec:
tls:
- hosts:
- {{ .Values.ingress.host }}
{{- if eq .Release.Name "eh-es" }}
- {{ print "www." .Values.ingress.host }}
{{- end }}
secretName: {{ .Values.ingress.tlsSecret }}
rules:
{{- if eq .Release.Name "eh-es" }}
- host: "{{ print "www." .Values.ingress.host }}"
{{- else }}
- host: "{{ .Values.ingress.host }}"
{{- end }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}-{{ .Chart.Name }}
port:
number: 80

14
etc/k8s/eshoponabp/charts/web/templates/web-service.yaml

@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
labels:
name: {{ .Release.Name }}-{{ .Chart.Name }}
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
ports:
- name: "80"
port: 80
- name: "443"
port: 443
selector:
app: {{ .Release.Name }}-{{ .Chart.Name }}

15
etc/k8s/eshoponabp/charts/web/values.yaml

@ -0,0 +1,15 @@
config:
selfUrl: https://eshop-st-web
gatewayUrl: "https://eshop-st-gateway-web/"
ingress:
host: eshop-st-web
tlsSecret: eshop-demo-tls
image:
repository: eshoponabp/app-web
tag: latest
pullPolicy: IfNotPresent
# Extra environment variables or configurations
env: {}

9
etc/k8s/eshoponabp/templates/NOTES.txt

@ -1,5 +1,10 @@
1. Get the application URL by running these commands: 1. Web (Back Office) angular application URL:{{- if .Values.web.config.selfUrl }} {{ .Values.web.config.selfUrl }} {{- end }}
{{- if .Values.ingress.enabled }} 2. Public Web mvc application URL:{{- if index .Values "public-web" "config" "selfUrl" }} {{ index .Values "public-web" "config" "selfUrl" }} {{- end }}
3. Authentication Server URL:{{- if .Values.authserver.config.selfUrl }} {{ .Values.authserver.config.selfUrl }}
For RabbitMq Administration use:
"kubectl port-forward services/{{ .Release.Name }}-rabbitmq 15672:15672 -n {{ .Release.Namespace }}"
{{- else if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }} {{- range $host := .Values.ingress.hosts }}
{{- range .paths }} {{- range .paths }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}

19
etc/k8s/eshoponabp/templates/_helpers.tpl

@ -60,22 +60,3 @@ Create the name of the service account to use
{{- default "default" .Values.serviceAccount.name }} {{- default "default" .Values.serviceAccount.name }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- define "eshoponabp.global.env" -}}
- name: "DOTNET_ENVIRONMENT"
value: "{{ .Values.global.dotnetEnvironment }}"
- name: "AppUrls__ApiInternal"
value: "{{ .Values.global.apiUrlInternal }}"
- name: "Redis__Configuration"
value: "{{ .Values.global.redisConfiguration }}"
- name: "AuthServer__Authority"
value: "{{ .Values.global.internalAuthServerAuthority }}"
- name: "AuthServer__RequireHttpsMetadata"
value: "{{ .Values.global.internalAuthServerRequireHttpsMetadata }}"
- name: "StringEncryption__DefaultPassPhrase"
value: "{{ .Values.global.stringEncryptionDefaultPassPhrase }}"
- name: "RabbitMQ__Connections__Default__HostName"
value: "{{ .Values.global.rabbitMqHostName }}"
- name: "Consul__Host"
value: "{{ .Values.global.consulHostname }}"
{{- end }}

15
etc/k8s/eshoponabp/templates/tests/test-connection.yaml

@ -1,15 +0,0 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "eshoponabp.fullname" . }}-test-connection"
labels:
{{- include "eshoponabp.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "eshoponabp.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never

227
etc/k8s/eshoponabp/values.yaml

@ -1,3 +1,182 @@
# auth-server sub-chart override
authserver:
config:
selfUrl: https://eshop-st-authserver
corsOrigins: https://eshop-st-gateway-web,https://eshop-st-gateway-web-public,https://eshop-st-gateway-internal
allowedRedirectUrls: https://eshop-st-web
identityService:
connString: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Identity;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
administrationService:
connString: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Administration;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
saasService:
connString: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Saas;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
ingress:
host: eshop-st-authserver
image:
repository: "eshoponabp/app-authserver"
tag: latest
# web sub-chart override
web:
config:
selfUrl: https://eshop-st-web
gatewayUrl: "https://eshop-st-gateway-web/"
ingress:
host: eshop-st-web
image:
repository: "eshoponabp/app-web"
tag: latest
# public-web sub-chart override
public-web:
config:
selfUrl: https://eshop-st-public-web
gatewayUrl: "http://eshop-st-gateway-web-public/"
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
ingress:
host: eshop-st-public-web
image:
repository: "eshoponabp/app-publicweb"
tag: latest
# identity-service sub-chart override
identity:
config:
selfUrl: https://eshop-st-identity
corsOrigins: https://eshop-st-gateway-web,https://eshop-st-gateway-web-public
connectionStrings:
identityService: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Identity;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
administrationService: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Administration;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
saasService: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Saas;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
identityServerClients: # Seeded Clients
webRootUrl: https://eshop-st-web/
publicWebRootUrl: https://eshop-st-public-web/
webGatewayRootUrl: https://eshop-st-gateway-web/
publicWebGatewayRootUrl: https://eshop-st-gateway-web-public/
identityServiceRootUrl: https://eshop-st-identity/
administrationServiceRootUrl: https://eshop-st-administration/
saasServiceRootUrl: https://eshop-st-saas/
ingress:
host: eshop-st-identity
image:
repository: "eshoponabp/service-identity"
tag: latest
# administration sub-chart override
administration:
config:
selfUrl: https://eshop-st-administration
gatewayUrl: https://eshop-st-gateway-internal/
corsOrigins: https://eshop-st-gateway-web,https://eshop-st-gateway-web-public,https://eshop-st-gateway-internal
connectionStrings:
administrationService: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Administration;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
saasService: "Server=es-st-sqldb,1433;Database=EShopOnAbp_Saas;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
synchedCommunication: # Used for server-to-server (client-credentials) communication with identityService for user permissions
authority: https://eshop-st-authserver
ingress:
host: eshop-st-administration
image:
repository: "eshoponabp/service-administration"
tag: latest
# gateway-web sub-chart override
gateway-web:
config:
selfUrl: https://eshop-st-gateway-web
corsOrigins: https://eshop-st-web
globalConfigurationBaseUrl: http://eshop-st-gateway-public
authServer:
authority: http://eshop-st-authserver
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
ingress:
host: eshop-st-gateway-web
image:
repository: "eshoponabp/gateway-web"
tag: latest
reRoutes:
identityService:
schema: http
host: eshop-st-identity
port: 80
administrationService:
schema: http
host: eshop-st-administration
port: 80
saasService:
schema: http
host: eshop-st-saas
port: 80
# gateway-web-public sub-chart override
gateway-web-public:
config:
selfUrl: https://eshop-st-gateway-web-public
globalConfigurationBaseUrl: http://eshop-st-gateway-public-web
authServer:
authority: http://eshop-st-AUTHSERVER
requireHttpsMetadata: "false"
dotnetEnv: Staging
redisHost: es-st-redis
rabbitmqHost: es-st-rabbitmq
elasticsearchHost: es-st-elasticsearch
stringEncryptionDefaultPassPhrase: gsKnGZ041HLL4IM8
ingress:
host: eshop-st-gateway-web-public
image:
repository: "eshoponabp/gateway-web-public"
tag: latest
reRoutes:
identityService:
schema: http
host: eshop-st-identity
port: 80
administrationService:
schema: http
host: eshop-st-administration
port: 80
catalogService:
schema: http
host: eshop-st-catalog
port: 80
basketService:
schema: http
host: eshop-st-basket
port: 80
orderService:
schema: http
host: eshop-st-order
port: 80
# Default values for eshoponabp. # Default values for eshoponabp.
# This is a YAML-formatted file. # This is a YAML-formatted file.
# Declare variables to be passed into your templates. # Declare variables to be passed into your templates.
@ -10,11 +189,6 @@ image:
# Overrides the image tag whose default is the chart appVersion. # Overrides the image tag whose default is the chart appVersion.
tag: "" tag: ""
administration:
env:
# - name: "ADMIN_SPECIFIC_ENV_NAME"
# value: "ADMIN_SPECIFIC_ENV_VALUE"
imagePullSecrets: [] imagePullSecrets: []
nameOverride: "" nameOverride: ""
fullnameOverride: "" fullnameOverride: ""
@ -84,45 +258,4 @@ nodeSelector: {}
tolerations: [] tolerations: []
affinity: {} affinity: {}
global:
dotnetEnvironment: "Staging"
imagePullPolicy: Never
eshoponabpImageVersion: latest
publicWeb:
domain: eshoponabp-public-web
url: https://eshoponabp-public-web
containerImage: "eshoponabp/app-publicweb"
remoteServiceUrl: http://eshoponabp-public-webgateway
authServer:
domain: eshoponabp-authserver
url: https://eshoponabp-authserver
containerImage: "eshoponabp/app-authserver"
identityService:
domain: eshoponabp-identity
url: https://eshoponabp-identity
containerImage: "eshoponabp/service-identity"
connString: "Server=eshoponabp-sqldb,1433;Database=EShopOnAbp_Identity;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
administrationService:
domain: eshoponabp-administration
url: https://eshoponabp-administration
containerImage: "eshoponabp/service-administration"
connString: "Server=eshoponabp-sqldb,1433;Database=EShopOnAbp_Administration;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
saasService:
domain: eshoponabp-saas
url: https://eshoponabp-saas
containerImage: "eshoponabp/service-saas"
connString: "Server=eshoponabp-sqldb,1433;Database=EShopOnAbp_Saas;User Id=sa;password=myPassw@rd;MultipleActiveResultSets=true"
publicWebGateway:
domain: eshoponabp-public-webgateway
url: https://eshoponabp-public-webgateway
containerImage: "eshoponabp/gateway-publicweb"
redisConfiguration: "eshoponabp-redis"
rabbitMqHostName: "eshoponabp-rabbitmq"
consulHostname: "http://eshoponabp-consul"
nginxProxyBufferSize: "32k"
nginxProxyBuffersNumber: "8"
internalAuthServerAuthority: "http://eshoponabp-authserver"
internalAuthServerRequireHttpsMetadata: "false"
stringEncryptionDefaultPassPhrase: "gsKnGZ041HLL4IM8"

31
etc/k8s/tls-cert/eshop-st-cert.pem

@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFQzCCA6ugAwIBAgIRANj5oNi+QQIoyV51y/ZIJlYwDQYJKoZIhvcNAQELBQAw
gZ8xHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE6MDgGA1UECwwxZ3Nl
bmd1bkBHb2toYW5zLU1hY0Jvb2stUHJvLmxvY2FsIChHb2toYW4gU2VuZ3VuKTFB
MD8GA1UEAww4bWtjZXJ0IGdzZW5ndW5AR29raGFucy1NYWNCb29rLVByby5sb2Nh
bCAoR29raGFuIFNlbmd1bikwHhcNMTkwNjAxMDAwMDAwWhcNMzExMTA0MDgyNjUw
WjBlMScwJQYDVQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxOjA4
BgNVBAsMMWdzZW5ndW5AR29raGFucy1NYWNCb29rLVByby5sb2NhbCAoR29raGFu
IFNlbmd1bikwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKu7X3b2Cg
dpBnz90KboUnpWRcCK96oq97pAEbR9sirN3+3jT0JRBY2TYKLDPW8i50QJFbdYE7
zky58c+RWPrxVDoeqRC8E1+TLsuW+TdMmOL746k36X1VtKy3rqUG9IS6MXjH/MX8
H1kgldHvE9mFEpyp3q/8cUPHSBUE+M0CA05wlDm8qgkGXcp43qrNElWg5Y2WWWIp
WUm8r5obktSAxhA+ZxFX4cJHFmxKymMqSRStDpTFCIW9C3kx5ierPNQS6g5sSMtW
OuPuh0Uhc0Q0lJBoA7Mj1CGvtO5nld0+6kAK1GMB7Vbigoqd00eqKMYaA3Aa5QZm
bf84wZjofJx1AgMBAAGjggExMIIBLTAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww
CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBR6TnYaWT+NPghb
dQnZ+MAbx9UB2DCB1gYDVR0RBIHOMIHLgghlc2hvcC1zdIIXZXNob3Atc3QtYWRt
aW5pc3RyYXRpb26CE2VzaG9wLXN0LWF1dGhzZXJ2ZXKCGWVzaG9wLXN0LWdhdGV3
YXktaW50ZXJuYWyCG2VzaG9wLXN0LWdhdGV3YXktcHVibGljLXdlYoIUZXNob3At
c3QtZ2F0ZXdheS13ZWKCEWVzaG9wLXN0LWlkZW50aXR5ghNlc2hvcC1zdC1wdWJs
aWMtd2Vigg1lc2hvcC1zdC1zYWFzggxlc2hvcC1zdC13ZWIwDQYJKoZIhvcNAQEL
BQADggGBADjQroM3gD7g56S8bxlUbt1sJYfvo0VCIDPH9aHE3WwhGCOn18SRDOpM
mNw4c0HO+P1+rlCfn2pvN2oQ6v731fQZPpGcE0ljeVrixqfyVvoggGMbOwegvWPh
dPK/cxLi9wYfQtFw5vy8YxsinowSRCQ3KJGxI4fsyjEQu939WvYSPDdEUPx952LR
2pG8yRSso7dixDW4rDCoI/QKM/ImnqsNtZSpGa93HLgjkJr/PsOVMogt8dOsDOkC
vHq9F6TJKTDb7WizMJcE0qfisJgtTC2isvYA3u7kiyfxW26kd1h7s4m3njn+0Sks
0xGcXiYPZm8y/lVrxcF3/QlgOfWfRmls3D17yX28QwuwvNkUv2aSP/WGOMWEtgPD
9WYPk1OhOGFxT3IKu8iw6ITTCKXpcBeQ/QiEuFjo/khDGE4NMSkrp16nVebkAWal
/eufFWZJTzO7kgCmApS2SAhRdsM+JEsioHF/gM2chzV+eP4CCKv3pw5z07eemhx2
HnEbhDFHEA==
-----END CERTIFICATE-----

28
etc/k8s/tls-cert/eshop-st-key.pem

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKu7X3b2CgdpBn
z90KboUnpWRcCK96oq97pAEbR9sirN3+3jT0JRBY2TYKLDPW8i50QJFbdYE7zky5
8c+RWPrxVDoeqRC8E1+TLsuW+TdMmOL746k36X1VtKy3rqUG9IS6MXjH/MX8H1kg
ldHvE9mFEpyp3q/8cUPHSBUE+M0CA05wlDm8qgkGXcp43qrNElWg5Y2WWWIpWUm8
r5obktSAxhA+ZxFX4cJHFmxKymMqSRStDpTFCIW9C3kx5ierPNQS6g5sSMtWOuPu
h0Uhc0Q0lJBoA7Mj1CGvtO5nld0+6kAK1GMB7Vbigoqd00eqKMYaA3Aa5QZmbf84
wZjofJx1AgMBAAECggEBALvJLd9ZInbf/Bi8uLFt+BbmI1UAkpKU2Nk86+16HKg8
2ZC4APLY1hCGeoDnusjyIUd7e2jtKdzc1cMzEiI++orJiuBVl/OuOkxZ/ykEBU4F
G9NYaKkqtPbLWWT291O+8KaLJqaQJE/KNcNyIzhB+a1CtSy/4eGChNa1lQq67yJZ
iTFPNSHT1RTzjv2BAuUASq1gK+bX4F65otVYQBMg3JGsfkAdhWPbzEX0XLVpgbh/
jtyAHSsiWIkyVjXvA3Zjp+3Gmf3dbd/86Uwd4XowPfcSOP4iyd76FS4iTlthsF5D
M0psBOgotVl5RHv2ljOy7fUzrudnSQ0HepgdHed4Em0CgYEA7q+j7cbcb43ZW5Rx
p2pMuuuEeFY+L2Ns8N4t26OoURQCzyACR5H4KgFtrrdqTwQPs7L8SWAjU8SoP2jX
j+4+TJnK/Grt0YQ2pLpEM8j7kjGWfskHDfQhrL3o4VhdCm/1URWYSn7nzdNnX1Fk
ZlKjUJWBXGTvthCUVY9Jk30hU4sCgYEA2XBupvyIpmjoNdsEdwxxSebLyIYu2FA/
sjI5gdzXIOo9DsFfn9HTNbXyEsiQm9StNXS585jRhyht9OF7SYajrJ/E3O086tf4
2MmDbUdFdvMdPdGxxTU2mXa9Vd6JASnFG+fSsRhABk57iNzcUE4+PNW1ztLmRyLx
diW9cXjXz/8CgYBxGF43U0utu+uqvgqgRfj3dJL/JfYvJBBBjTTzZndhe3bdR5Bs
8xhAZw7eg1/m8six3/Q0nE4A6iTCbt38/+kbCKAqvEvVQ61UnkGku+2f1sk1Z/Fk
xjGSlSWcaO8k++mkMvRHEByr5SiM/Jby+OMTUtPJwLXocbCnXc6CCP9agwKBgEe7
I4XLAXmEWjaKDisH28e5b7izK3kI4Dp0/yusIvwkyge4G0ep/LdXUoiHyczemFVu
MHoAC/8+gyepyvYyiIRGILeRO+ttXBaIQ+ck//GBuj/OkYqxR1XRKhzN0PylPvU5
wPPTQCvUcERyN+v2I+oFxnh4cqc9C9MiGCD68JcZAoGBAIi1RxcWKZUCjSETT1PY
V7j5FIyMzBdUo0RN44eUdeu0CWAOnMG2s26z6fXl7EZp+Em5ee7dYEmSP49X69n9
T9ueN1LRJaqko45Eo3uPl6rolz5vXcTr2Tooc3yqE3XbRxe2jOeczq06nj06kjuf
hPPdSqjjOwWPy63DWboSkh+0
-----END PRIVATE KEY-----

9
etc/k8s/tls-cert/notes.md

@ -0,0 +1,9 @@
# Notes
## Creating demo tls cert
```
kubectl create secret tls eshop-demo-tls \
--cert=eshop-st-cert.pem \
--key=eshop-st-key.pem
```

13
etc/scripts/build-images.ps1

@ -7,7 +7,7 @@ $authserverFolder = Join-Path $slnFolder "apps/auth-server/src/EShopOnAbp.AuthSe
$publicWebFolder = Join-Path $slnFolder "apps/public-web/src/EShopOnAbp.PublicWeb" $publicWebFolder = Join-Path $slnFolder "apps/public-web/src/EShopOnAbp.PublicWeb"
$webGatewayFolder = Join-Path $slnFolder "gateways/web/src/EShopOnAbp.WebGateway" $webGatewayFolder = Join-Path $slnFolder "gateways/web/src/EShopOnAbp.WebGateway"
$publicWebGatewayFolder = Join-Path $slnFolder "gateways/web-public/src/EShopOnAbp.WebPublicGateway" $webPublicGatewayFolder = Join-Path $slnFolder "gateways/web-public/src/EShopOnAbp.WebPublicGateway"
$internalGatewayFolder = Join-Path $slnFolder "gateways/internal/src/EShopOnAbp.InternalGateway" $internalGatewayFolder = Join-Path $slnFolder "gateways/internal/src/EShopOnAbp.InternalGateway"
$identityServiceFolder = Join-Path $slnFolder "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host" $identityServiceFolder = Join-Path $slnFolder "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host"
@ -18,7 +18,8 @@ $saasServiceFolder = Join-Path $slnFolder "services/saas/src/EShopOnAbp.SaasServ
Write-Host "*** BUILDING WEB (WWW) ****************" -ForegroundColor Green Write-Host "*** BUILDING WEB (WWW) ****************" -ForegroundColor Green
Set-Location $webAppFolder Set-Location $webAppFolder
yarn yarn
ng build --prod # ng build --prod
npm run build:prod
docker build -t eshoponabp/app-web:$version . docker build -t eshoponabp/app-web:$version .
### AUTH-SERVER ### AUTH-SERVER
@ -28,7 +29,7 @@ dotnet publish -c Release
docker build -t eshoponabp/app-authserver:$version . docker build -t eshoponabp/app-authserver:$version .
### PUBLIC-WEB ### PUBLIC-WEB
Write-Host "*** BUILDING PUBLIC-WEB ****************" -ForegroundColor Green Write-Host "*** BUILDING WEB-PUBLIC ****************" -ForegroundColor Green
Set-Location $publicWebFolder Set-Location $publicWebFolder
dotnet publish -c Release dotnet publish -c Release
docker build -t eshoponabp/app-publicweb:$version . docker build -t eshoponabp/app-publicweb:$version .
@ -40,10 +41,10 @@ dotnet publish -c Release
docker build -t eshoponabp/gateway-web:$version . docker build -t eshoponabp/gateway-web:$version .
### PUBLICWEB-GATEWAY ### PUBLICWEB-GATEWAY
Write-Host "*** BUILDING PUBLICWEB-GATEWAY ****************" -ForegroundColor Green Write-Host "*** BUILDING WEB-PUBLIC-GATEWAY ****************" -ForegroundColor Green
Set-Location $publicWebGatewayFolder Set-Location $webPublicGatewayFolder
dotnet publish -c Release dotnet publish -c Release
docker build -t eshoponabp/gateway-publicweb:$version . docker build -t eshoponabp/gateway-web-public:$version .
### INTERNAL-GATEWAY ### INTERNAL-GATEWAY
Write-Host "*** BUILDING INTERNAL-GATEWAY ****************" -ForegroundColor Green Write-Host "*** BUILDING INTERNAL-GATEWAY ****************" -ForegroundColor Green

32
gateways/internal/EShopOnAbp.InternalGateway.sln

@ -1,32 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31320.298
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{138BBFFC-09B9-49FB-9C57-E25327CCE0C1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A5E7F07B-7A5D-416D-A9E0-2009A48CBE2A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EShopOnAbp.InternalGateway", "src\EShopOnAbp.InternalGateway\EShopOnAbp.InternalGateway.csproj", "{EB7B7C24-2A6D-4500-B8E0-2988EF65DC8C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EB7B7C24-2A6D-4500-B8E0-2988EF65DC8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB7B7C24-2A6D-4500-B8E0-2988EF65DC8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB7B7C24-2A6D-4500-B8E0-2988EF65DC8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB7B7C24-2A6D-4500-B8E0-2988EF65DC8C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{EB7B7C24-2A6D-4500-B8E0-2988EF65DC8C} = {138BBFFC-09B9-49FB-9C57-E25327CCE0C1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1753A143-A9EF-43ED-970D-C71BAD179AE6}
EndGlobalSection
EndGlobal

13
gateways/internal/src/EShopOnAbp.InternalGateway/Controllers/HomeController.cs

@ -1,13 +0,0 @@
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace EShopOnAbp.InternalGateway.Controllers
{
public class HomeController : AbpController
{
public ActionResult Index()
{
return Redirect("/swagger");
}
}
}

19
gateways/internal/src/EShopOnAbp.InternalGateway/EShopOnAbp.InternalGateway.csproj

@ -1,19 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Hosting.Gateways\EShopOnAbp.Shared.Hosting.Gateways.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Logs\**" />
<Content Remove="Logs\**" />
<EmbeddedResource Remove="Logs\**" />
<None Remove="Logs\**" />
</ItemGroup>
</Project>

67
gateways/internal/src/EShopOnAbp.InternalGateway/EShopOnAbpInternalGatewayModule.cs

@ -1,67 +0,0 @@
using EShopOnAbp.Shared.Hosting.Gateways;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Ocelot.Middleware;
using System.Collections.Generic;
using System.Linq;
using EShopOnAbp.Shared.Hosting.AspNetCore;
using Volo.Abp;
using Volo.Abp.Modularity;
namespace EShopOnAbp.InternalGateway
{
[DependsOn(
typeof(EShopOnAbpSharedHostingGatewaysModule)
)]
public class EShopOnAbpInternalGatewayModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
var hostingEnvironment = context.Services.GetHostingEnvironment();
SwaggerConfigurationHelper.Configure(context, "Internal Gateway");
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCorrelationId();
app.UseSwagger();
app.UseSwaggerUI(options =>
{
var configuration = context.ServiceProvider.GetRequiredService<IConfiguration>();
var routes = configuration.GetSection("Routes").Get<List<OcelotConfiguration>>();
foreach (var config in routes.GroupBy(t => t.ServiceKey).Select(r => r.First()).Distinct())
{
var url =
$"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}";
options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API");
options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);
}
});
app.UseAbpSerilogEnrichers();
app.MapWhen(
ctx => ctx.Request.Path.ToString().StartsWith("/api/abp/api-definition") ||
ctx.Request.Path.ToString().TrimEnd('/').Equals(""),
app2 =>
{
app2.UseRouting();
app2.UseConfiguredEndpoints();
}
);
app.UseOcelot().Wait();
}
}
}

46
gateways/internal/src/EShopOnAbp.InternalGateway/Program.cs

@ -1,46 +0,0 @@
using EShopOnAbp.Shared.Hosting.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Serilog;
using System;
using System.Threading.Tasks;
namespace EShopOnAbp.InternalGateway
{
public class Program
{
public static async Task<int> Main(string[] args)
{
var assemblyName = typeof(Program).Assembly.GetName().Name;
SerilogConfigurationHelper.Configure(assemblyName);
try
{
Log.Information($"Starting {assemblyName}.");
await CreateHostBuilder(args).Build().RunAsync();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, $"{assemblyName} terminated unexpectedly!");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
internal static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(build =>
{
build.AddJsonFile("appsettings.secrets.json", optional: true);
})
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); })
.UseAutofac()
.UseSerilog();
}
}

29
gateways/internal/src/EShopOnAbp.InternalGateway/Properties/launchSettings.json

@ -1,29 +0,0 @@
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "https://localhost:44371",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"EShopOnAbp.InternalGateway": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"applicationUrl": "https://localhost:44371",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

19
gateways/internal/src/EShopOnAbp.InternalGateway/Startup.cs

@ -1,19 +0,0 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
namespace EShopOnAbp.InternalGateway
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddApplication<EShopOnAbpInternalGatewayModule>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.InitializeApplication();
}
}
}

9
gateways/internal/src/EShopOnAbp.InternalGateway/appsettings.Development.json

@ -1,9 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

56
gateways/web-public/src/EShopOnAbp.WebPublicGateway/Dockerfile

@ -1,4 +1,52 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
COPY bin/Release/net6.0/publish/ app/ WORKDIR /app
WORKDIR /app EXPOSE 80
ENTRYPOINT ["dotnet", "EShopOnAbp.WebPublicGateway.dll"] EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
# It's important to keep lines from here down to "COPY . ." identical in all Dockerfiles
# to take advantage of Docker's build cache, to speed up local container builds
COPY "EShopOnAbp.sln" "EShopOnAbp.sln"
# Applications
COPY "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj" "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj"
COPY "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj" "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj"
# Shared
COPY "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj" "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj" "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj" "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj" "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj"
COPY "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj" "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj"
# Microservices
COPY "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj" "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj"
COPY "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj" "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj"
COPY *"services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj" "services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj"
COPY *"services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj" "services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj"
COPY *"services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj" "services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj"
COPY *"services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj" "services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj"
COPY *"services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj" "services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj"
# Gateways
COPY "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj" "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj"
COPY "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj" "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj"
COPY "NuGet.Config" "NuGet.Config"
RUN dotnet restore "EShopOnAbp.sln"
COPY . .
WORKDIR "/src/gateways/web-public/src/EShopOnAbp.WebPublicGateway"
RUN dotnet publish -c Release -o /app
# Should be used after .net6 is out of preview for better performance
# RUN dotnet publish --no-restore -c Release -o /app
FROM build AS publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "EShopOnAbp.WebPublicGateway.dll"]

4
gateways/web-public/src/EShopOnAbp.WebPublicGateway/Dockerfile.local

@ -0,0 +1,4 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0
COPY bin/Release/net6.0/publish/ app/
WORKDIR /app
ENTRYPOINT ["dotnet", "EShopOnAbp.WebPublicGateway.dll"]

4
gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs

@ -45,6 +45,10 @@ namespace EShopOnAbp.WebPublicGateway
{ {
var url = var url =
$"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}"; $"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}";
if (!env.IsDevelopment())
{
url = $"https://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}";
}
options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API"); options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API");
options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);

2
gateways/web-public/src/EShopOnAbp.WebPublicGateway/Program.cs

@ -37,7 +37,7 @@ namespace EShopOnAbp.WebPublicGateway
Host.CreateDefaultBuilder(args) Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(build => .ConfigureAppConfiguration(build =>
{ {
build.AddJsonFile("appsettings.secrets.json", optional: true); build.AddJsonFile("appsettings.secrets.json", optional: true, reloadOnChange:true);
}) })
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); })
.UseAutofac() .UseAutofac()

7
gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json

@ -42,7 +42,12 @@
} }
], ],
"UpstreamPathTemplate": "/api/abp/{everything}", "UpstreamPathTemplate": "/api/abp/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ],
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": 3,
"DurationOfBreak": 3000,
"TimeoutValue": 2500
}
}, },
{ {
"ServiceKey": "Catalog Service", "ServiceKey": "Catalog Service",

56
gateways/web/src/EShopOnAbp.WebGateway/Dockerfile

@ -1,4 +1,52 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
COPY bin/Release/net6.0/publish/ app/ WORKDIR /app
WORKDIR /app EXPOSE 80
ENTRYPOINT ["dotnet", "EShopOnAbp.WebGateway.dll"] EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
# It's important to keep lines from here down to "COPY . ." identical in all Dockerfiles
# to take advantage of Docker's build cache, to speed up local container builds
COPY "EShopOnAbp.sln" "EShopOnAbp.sln"
# Applications
COPY "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj" "apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbp.AuthServer.csproj"
COPY "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj" "apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbp.PublicWeb.csproj"
# Shared
COPY "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj" "shared/EShopOnAbp.Shared.Hosting/EShopOnAbp.Shared.Hosting.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj" "shared/EShopOnAbp.Shared.Hosting.AspNetCore/EShopOnAbp.Shared.Hosting.AspNetCore.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj" "shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj"
COPY "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj" "shared/EShopOnAbp.Shared.Hosting.Microservices/EShopOnAbp.Shared.Hosting.Microservices.csproj"
COPY "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj" "shared/EShopOnAbp.Shared.Localization/EShopOnAbp.Shared.Localization.csproj"
# Microservices
COPY "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj" "services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/EShopOnAbp.AdministrationService.HttpApi.Host.csproj"
COPY "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj" "services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/EShopOnAbp.IdentityService.HttpApi.Host.csproj"
COPY *"services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj" "services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/EShopOnAbp.SaasService.HttpApi.Host.csproj"
COPY *"services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj" "services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj"
COPY *"services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj" "services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/EShopOnAbp.OrderingService.HttpApi.Host.csproj"
COPY *"services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj" "services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj"
COPY *"services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj" "services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/EShopOnAbp.PaymentService.HttpApi.Host.csproj"
# Gateways
COPY "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj" "gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbp.WebGateway.csproj"
COPY "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj" "gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbp.WebPublicGateway.csproj"
COPY "NuGet.Config" "NuGet.Config"
RUN dotnet restore "EShopOnAbp.sln"
COPY . .
WORKDIR "/src/gateways/web/src/EShopOnAbp.WebGateway"
RUN dotnet publish -c Release -o /app
# Should be used after .net6 is out of preview for better performance
# RUN dotnet publish --no-restore -c Release -o /app
FROM build AS publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "EShopOnAbp.WebGateway.dll"]

4
gateways/web/src/EShopOnAbp.WebGateway/Dockerfile.local

@ -0,0 +1,4 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0
COPY bin/Release/net6.0/publish/ app/
WORKDIR /app
ENTRYPOINT ["dotnet", "EShopOnAbp.WebGateway.dll"]

24
gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbpWebGatewayModule.cs

@ -25,6 +25,25 @@ namespace EShopOnAbp.WebGateway
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
SwaggerConfigurationHelper.Configure(context, "Web Gateway"); SwaggerConfigurationHelper.Configure(context, "Web Gateway");
context.Services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder
.WithOrigins(
configuration["App:CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.Trim().RemovePostFix("/"))
.ToArray()
)
.WithAbpExposedHeaders()
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
} }
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
@ -38,6 +57,7 @@ namespace EShopOnAbp.WebGateway
} }
app.UseCorrelationId(); app.UseCorrelationId();
app.UseCors();
app.UseSwagger(); app.UseSwagger();
app.UseSwaggerUI(options => app.UseSwaggerUI(options =>
{ {
@ -48,6 +68,10 @@ namespace EShopOnAbp.WebGateway
{ {
var url = var url =
$"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}"; $"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}";
if (!env.IsDevelopment())
{
url = $"https://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}";
}
options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API"); options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API");
options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);

7
gateways/web/src/EShopOnAbp.WebGateway/appsettings.json

@ -68,7 +68,12 @@
} }
], ],
"UpstreamPathTemplate": "/api/abp/{everything}", "UpstreamPathTemplate": "/api/abp/{everything}",
"UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ],
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": 3,
"DurationOfBreak": 5000,
"TimeoutValue": 2500
}
}, },
{ {
"ServiceKey": "Administration Service", "ServiceKey": "Administration Service",

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save