Browse Source

Merge pull request #112 from abpframework/gterdem/docker-compose-feature

eShopOnAbp: Add Docker-Compose
pull/117/head
Enis Necipoglu 4 years ago
committed by GitHub
parent
commit
27f19ba223
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 28
      apps/angular/src/index.html
  2. 7
      apps/auth-server/src/EShopOnAbp.AuthServer/EShopOnAbpAuthServerModule.cs
  3. 70
      apps/auth-server/src/EShopOnAbp.AuthServer/SameSiteCookiesServiceCollectionExtensions.cs
  4. 2
      etc/docker/certs/eshop-ssl.conf
  5. 302
      etc/docker/docker-compose.yml
  6. 165
      etc/docker/nginx/conf.d/default.conf
  7. 23
      etc/docker/nginx/dynamic-env.json

28
apps/angular/src/index.html

@ -1,16 +1,20 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head>
<meta charset="utf-8" />
<title>EShopOnAbp</title>
<base href="/" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <head>
<link rel="icon" type="image/x-icon" href="favicon.ico" /> <meta charset="utf-8" />
</head> <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<body class="bg-light"> <title>EShopOnAbp</title>
<app-root> <base href="/" />
<div class="donut centered"></div>
</app-root> <meta name="viewport" content="width=device-width, initial-scale=1" />
</body> <link rel="icon" type="image/x-icon" href="favicon.ico" />
</head>
<body class="bg-light">
<app-root>
<div class="donut centered"></div>
</app-root>
</body>
</html> </html>

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

@ -78,6 +78,7 @@ public class EShopOnAbpAuthServerModule : AbpModule
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
ConfigureSameSiteCookiePolicy(context);
ConfigureSwagger(context, configuration); ConfigureSwagger(context, configuration);
context.Services.AddAuthentication() context.Services.AddAuthentication()
@ -148,6 +149,11 @@ public class EShopOnAbpAuthServerModule : AbpModule
} }
} }
private void ConfigureSameSiteCookiePolicy(ServiceConfigurationContext context)
{
context.Services.AddSameSiteCookiePolicy();
}
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
@ -181,6 +187,7 @@ public class EShopOnAbpAuthServerModule : AbpModule
app.UseStaticFiles(); app.UseStaticFiles();
app.UseRouting(); app.UseRouting();
app.UseCors(); app.UseCors();
app.UseCookiePolicy();
app.UseAuthentication(); app.UseAuthentication();
app.UseJwtTokenMiddleware(); app.UseJwtTokenMiddleware();
app.UseAbpSerilogEnrichers(); app.UseAbpSerilogEnrichers();

70
apps/auth-server/src/EShopOnAbp.AuthServer/SameSiteCookiesServiceCollectionExtensions.cs

@ -0,0 +1,70 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
namespace Microsoft.Extensions.DependencyInjection
{
public static class SameSiteCookiesServiceCollectionExtensions
{
public static IServiceCollection AddSameSiteCookiePolicy(this IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
options.OnAppendCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
options.OnDeleteCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
});
return services;
}
private static void CheckSameSite(HttpContext httpContext, CookieOptions options)
{
if (options.SameSite == SameSiteMode.None)
{
var userAgent = httpContext.Request.Headers["User-Agent"].ToString();
if (!httpContext.Request.IsHttps || DisallowsSameSiteNone(userAgent))
{
// For .NET Core < 3.1 set SameSite = (SameSiteMode)(-1)
options.SameSite = SameSiteMode.Unspecified;
}
}
}
private static bool DisallowsSameSiteNone(string userAgent)
{
// Cover all iOS based browsers here. This includes:
// - Safari on iOS 12 for iPhone, iPod Touch, iPad
// - WkWebview on iOS 12 for iPhone, iPod Touch, iPad
// - Chrome on iOS 12 for iPhone, iPod Touch, iPad
// All of which are broken by SameSite=None, because they use the iOS networking stack
if (userAgent.Contains("CPU iPhone OS 12") || userAgent.Contains("iPad; CPU OS 12"))
{
return true;
}
// Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:
// - Safari on Mac OS X.
// This does not include:
// - Chrome on Mac OS X
// Because they do not use the Mac OS networking stack.
if (userAgent.Contains("Macintosh; Intel Mac OS X 10_14") &&
userAgent.Contains("Version/") && userAgent.Contains("Safari"))
{
return true;
}
// Cover Chrome 50-69, because some versions are broken by SameSite=None,
// and none in this range require it.
// Note: this covers some pre-Chromium Edge versions,
// but pre-Chromium Edge does not require SameSite=None.
if (userAgent.Contains("Chrome/5") || userAgent.Contains("Chrome/6"))
{
return true;
}
return false;
}
}
}

2
etc/docker/certs/eshop-ssl.conf

@ -28,7 +28,7 @@ DNS.6 = app-publicweb
DNS.7 = gateway-web DNS.7 = gateway-web
DNS.8 = gateway-web-public DNS.8 = gateway-web-public
DNS.9 = administration-service DNS.9 = administration-service
DNS.10 = identity-service DNS.10 = identity-service
DNS.11 = catalog-service DNS.11 = catalog-service
DNS.12 = basket-service DNS.12 = basket-service
DNS.13 = ordering-service DNS.13 = ordering-service

302
etc/docker/docker-compose.yml

@ -3,32 +3,48 @@ version: '3.7'
services: services:
lb: lb:
image: nginx:1.21 image: nginx:1.21
container_name: load-balancer-container
ports: ports:
- 80:80 - 80:80
- 443:443 - 443:443
volumes: volumes:
- ./nginx/certs/app-publicweb+2.pem:/etc/nginx/certs/app-cert.pem:ro - ./nginx/certs/eshop-st-web+10.pem:/etc/nginx/certs/app-cert.pem:ro
- ./nginx/certs/app-publicweb+2-key.pem:/etc/nginx/certs/app-key.pem:ro - ./nginx/certs/eshop-st-web+10-key.pem:/etc/nginx/certs/app-cert-key.pem:ro
- ./nginx/conf.d:/etc/nginx/conf.d:ro - ./nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- eshop-st-administration
- eshop-st-authserver
- eshop-st-identity
- eshop-st-basket
- eshop-st-catalog
- eshop-st-ordering
- eshop-st-payment
- eshop-st-web
- eshop-st-public-web
- eshop-st-gateway-web-public
- eshop-st-gateway-web
networks: networks:
- eshoponabp-network - eshoponabp-network
administration-service: eshop-st-administration:
image: eshoponabp/service-administration:latest image: eshoponabp/service-administration:latest
container_name: administration-service-container container_name: administration-service-container
build: build:
context: ../../ context: ../../
dockerfile: services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/Dockerfile dockerfile: services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=http://+:80 - ASPNETCORE_URLS=http://+:80
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-administration
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - App__CorsOrigins=https://gateway-web,gateway-web-public
# - Redis__Configuration=redis - RemoteServices__AbpIdentity__BaseUrl=eshop-st-identity
# - RabbitMQ__Connections__Default__HostName=rabbitmq - RemoteServices__AbpIdentity__UseCurrentAccessToken=false
# - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false; - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
# ports: - AuthServer__Authority=http://eshop-st-authserver
# - "44353:443" - AuthServer__RequireHttpsMetadata=false
- IdentityClients__Default__Authority=http://eshop-st-identity
- Redis__Configuration=redis
- RabbitMQ__Connections__Default__HostName=rabbitmq
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -39,25 +55,34 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-identity:
# - ./certs:/root/certificate
identity-service:
image: eshoponabp/service-identity:latest image: eshoponabp/service-identity:latest
container_name: identity-service-container container_name: identity-service-container
build: build:
context: ../../ context: ../../
dockerfile: services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/Dockerfile dockerfile: services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=http://+:80 - ASPNETCORE_URLS=http://+:80
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-identity
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - App__CorsOrigins=https://gateway-web,gateway-web-public
- Redis__Configuration=redis - AuthServer__Authority=http://eshop-st-authserver
- RabbitMQ__Connections__Default__HostName=rabbitmq - AuthServer__RequireHttpsMetadata=false
- ConnectionStrings__IdentityService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Identity;Pooling=false; - ConnectionStrings__IdentityService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Identity;Pooling=false;
- ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false; - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
# ports: - Redis__Configuration=redis
# - "44351:443" - RabbitMQ__Connections__Default__HostName=rabbitmq
- IdentityServerClients__Web__RootUrl=https://eshop-st-web
- IdentityServerClients__PublicWeb__RootUrl=https://eshop-st-public-web
- IdentityServerClients__WebGateway__RootUrl=https://localhost:44372
- IdentityServerClients__PublicWebGateway__RootUrl=https://eshop-st-gateway-web-public
- IdentityServerClients__IdentityService__RootUrl=https://eshop-st-identity
- IdentityServerClients__AdministrationService__RootUrl=https://eshop-st-administration
- IdentityServerClients__AccountService__RootUrl=https://eshop-st-authserver
- IdentityServerClients__CatalogService__RootUrl=https://localhost:44354
- IdentityServerClients__BasketService__RootUrl=https://localhost:44355
- IdentityServerClients__OrderingService__RootUrl=https://localhost:44356
- IdentityServerClients__PaymentService__RootUrl=https://localhost:44357
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -68,30 +93,26 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-catalog:
# - ./certs:/root/certificate
catalog-service:
image: eshoponabp/service-catalog:latest image: eshoponabp/service-catalog:latest
container_name: catalog-service-container container_name: catalog-service-container
build: build:
context: ../../ context: ../../
dockerfile: services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Dockerfile dockerfile: services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=https://+:443;http://+:80;http://+:81; - ASPNETCORE_URLS=http://+:80;http://+:81;
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-catalog
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - App__CorsOrigins=https://eshop-st-gateway-web,https://eshop-st-gateway-web-public,https://eshop-st-public-web,https://eshop-st-web
- AuthServer__Authority=http://eshop-st-authserver
- AuthServer__RequireHttpsMetadata=false
- Kestrel__EndPoints__Http__Url=http://docker.host.internal:80 - Kestrel__EndPoints__Http__Url=http://docker.host.internal:80
- Kestrel__EndPoints__Https__Url=https://docker.host.internal:443
- Kestrel__EndPoints__gRPC__Url=http://docker.host.internal:81 - Kestrel__EndPoints__gRPC__Url=http://docker.host.internal:81
# - Redis__Configuration=redis - Kestrel__EndPoints__gRPC__Protocols=Http2
# - RabbitMQ__Connections__Default__HostName=rabbitmq - ConnectionStrings__CatalogService=mongodb://mongodb/EShopOnAbp_Catalog
# - ConnectionStrings__CatalogService=mongodb://mongodb/EShopOnAbp_Catalog - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
# - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false; - Redis__Configuration=redis
# ports: - RabbitMQ__Connections__Default__HostName=rabbitmq
# - "44354:443"
# - "5000:80"
# - "81:81"
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -102,26 +123,24 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-basket:
# - ./certs:/root/certificate
basket-service:
image: eshoponabp/service-basket:latest image: eshoponabp/service-basket:latest
container_name: basket-service-container container_name: basket-service-container
build: build:
context: ../../ context: ../../
dockerfile: services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/Dockerfile dockerfile: services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=https://+:443;http://+:80; - ASPNETCORE_URLS=http://+:80
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-basket
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - App__CorsOrigins=https://eshop-st-gateway-web,https://eshop-st-gateway-web-public,https://eshop-st-public-web
# - Redis__Configuration=redis - RemoteServices__Catalog__BaseUrl=http://eshop-st-catalog:80
# - RabbitMQ__Connections__Default__HostName=rabbitmq - RemoteServices__Catalog__GrpcUrl=http://eshop-st-catalog:81
# - RemoteServices__Catalog__BaseUrl=https://catalog-service - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
# - RemoteServices__Catalog__GrpcUrl=http://catalog-service - AuthServer__Authority=http://eshop-st-authserver
# - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false; - AuthServer__RequireHttpsMetadata=false
# ports: - Redis__Configuration=redis
# - "44355:443" - RabbitMQ__Connections__Default__HostName=rabbitmq
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -132,25 +151,23 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-ordering:
# - ./certs:/root/certificate
ordering-service:
image: eshoponabp/service-ordering:latest image: eshoponabp/service-ordering:latest
container_name: ordering-service-container container_name: ordering-service-container
build: build:
context: ../../ context: ../../
dockerfile: services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/Dockerfile dockerfile: services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=https://+:443;http://+:80; - ASPNETCORE_URLS=http://+:80;
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-ordering
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - App__CorsOrigins=https://eshop-st-gateway-web,https://eshop-st-gateway-web-public,https://eshop-st-web
- ConnectionStrings__OrderingService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Ordering;Pooling=false;
- ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
- AuthServer__Authority=http://eshop-st-authserver
- AuthServer__RequireHttpsMetadata=false
- Redis__Configuration=redis - Redis__Configuration=redis
- RabbitMQ__Connections__Default__HostName=rabbitmq - RabbitMQ__Connections__Default__HostName=rabbitmq
- ConnectionStrings__OrderingService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Ordering;Pooling=false;
- ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
# ports:
# - "44356:443"
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -163,26 +180,26 @@ services:
- eshoponabp-network - eshoponabp-network
# volumes: # volumes:
# - ./certs:/root/certificate # - ./certs:/root/certificate
payment-service: eshop-st-payment:
image: eshoponabp/service-payment:latest image: eshoponabp/service-payment:latest
container_name: payment-service-container container_name: payment-service-container
build: build:
context: ../../ context: ../../
dockerfile: services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/Dockerfile dockerfile: services/payment/src/EShopOnAbp.PaymentService.HttpApi.Host/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=https://+:443;http://+:80; - ASPNETCORE_URLS=http://+:80;
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-payment
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - App__CorsOrigins=https://eshop-st-gateway-web,https://eshop-st-gateway-web-public
- Redis__Configuration=redis
- RabbitMQ__Connections__Default__HostName=rabbitmq
- ConnectionStrings__PaymentService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Payment;Pooling=false; - ConnectionStrings__PaymentService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Payment;Pooling=false;
- ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false; - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
- AuthServer__Authority=http://eshop-st-authserver
- AuthServer__RequireHttpsMetadata=false
- Redis__Configuration=redis
- RabbitMQ__Connections__Default__HostName=rabbitmq
- Payment__PayPal__ClientId=PAYPAL_CLIENT_ID - Payment__PayPal__ClientId=PAYPAL_CLIENT_ID
- Payment__PayPal__Secret=PAYPAL_SECRET - Payment__PayPal__Secret=PAYPAL_SECRET
- Payment__PayPal__Environment=Sandbox - Payment__PayPal__Environment=Sandbox
# ports:
# - "44357:443"
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -193,84 +210,66 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-authserver:
# - ./certs:/root/certificate image: eshoponabp/app-authserver:latest
app-web: container_name: app-authserver-container
image: eshoponabp/app-web:latest
container_name: app-web-container
build: build:
context: ../../ context: ../../
dockerfile: apps/angular/Dockerfile dockerfile: apps/auth-server/src/EShopOnAbp.AuthServer/Dockerfile
environment: environment:
# - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=http://+:80;
- App__SelfUrl=https://eshop-st-authserver
- App__CorsOrigins=https://eshop-st-web,https://eshop-st-public-web,https://eshop-st-identity,http://eshop-st-administration,https://eshop-st-administration,https://eshop-st-catalog,https://eshop-st-basket,https://eshop-st-ordering,https://eshop-st-payment
- App__RedirectAllowedUrls=http://eshop-st-web
- AuthServer__Authority=http://eshop-st-authserver
- AuthServer__RequireHttpsMetadata=false
- ConnectionStrings__IdentityService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Identity;Pooling=false;
- ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
- Redis__Configuration=redis
- RabbitMQ__Connections__Default__HostName=rabbitmq - RabbitMQ__Connections__Default__HostName=rabbitmq
- RemoteServices__Default__BaseUrl=http://gateway-web-public
# ports:
# - "4200:80"
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
postgres-db:
condition: service_healthy
rabbitmq: rabbitmq:
condition: service_healthy condition: service_healthy
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-web:
# - ./certs:/root/certificate image: eshoponabp/app-web:latest
app-authserver: container_name: app-web-container
image: eshoponabp/app-authserver:latest
container_name: app-authserver-container
build: build:
context: ../../ context: ../../
dockerfile: apps/auth-server/src/EShopOnAbp.AuthServer/Dockerfile dockerfile: apps/angular/Dockerfile
environment: volumes:
- ASPNETCORE_ENVIRONMENT=Docker - ./nginx/dynamic-env.json://usr/share/nginx/html/dynamic-env.json
- ASPNETCORE_URLS=https://+:443;http://+:80;
- ASPNETCORE_HTTPS_PORT=44330
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49
# - Redis__Configuration=redis
# - RabbitMQ__Connections__Default__HostName=rabbitmq
# - App__SelfUrl=https://app-authserver
# - App__CorsOrigins=http://app-web,https://identity-service,https://administration-service,https://catalog-service,https://basket-service,https://ordering-service,https://payment-service
# - App__RedirectAllowedUrls=http://app-web
- AuthServer__Authority=https://app-authserver
- AuthServer__RequireHttpsMetadata=true
# - ConnectionStrings__IdentityService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Identity;Pooling=false;
# - ConnectionStrings__AdministrationService=User ID=postgres;Password=myPassw0rd;Host=postgres-db;Port=5432;Database=EShopOnAbp_Administration;Pooling=false;
# ports:
# - "44330:443"
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
postgres-db:
condition: service_healthy
rabbitmq: rabbitmq:
condition: service_healthy condition: service_healthy
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-public-web:
# - ./certs:/root/certificate
app-publicweb:
image: eshoponabp/app-publicweb:latest image: eshoponabp/app-publicweb:latest
container_name: app-publicweb-container container_name: app-publicweb-container
build: build:
context: ../../ context: ../../
dockerfile: apps/public-web/src/EShopOnAbp.PublicWeb/Dockerfile dockerfile: apps/public-web/src/EShopOnAbp.PublicWeb/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # - ASPNETCORE_ENVIRONMENT=Docker
- ASPNETCORE_URLS=https://+:443;http://+:80; - ASPNETCORE_URLS=http://+:80;
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-public-web
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - AuthServer__Authority=http://eshop-st-authserver
# - Redis__Configuration=redis - AuthServer__RequireHttpsMetadata=false
# - RabbitMQ__Connections__Default__HostName=rabbitmq - RemoteServices__Default__BaseUrl=http://eshop-st-gateway-web-public/
# - App__SelfUrl=https://app-publicweb - Redis__Configuration=redis
- AuthServer__Authority=https://app-authserver - RabbitMQ__Connections__Default__HostName=rabbitmq
- AuthServer__RequireHttpsMetadata=true - ReverseProxy__Clusters__cluster1__Destinations__destination1__Address=http://eshop-st-gateway-web-public
# - RemoteServices__Default__BaseUrl=http://gateway-web-public
# - ReverseProxy__Clusters__cluster1__Destinations__destination1__Address=http://gateway-web-public
# ports:
# - "44335:443"
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -279,9 +278,7 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-gateway-web:
# - ./certs:/root/certificate
gateway-web:
image: eshoponabp/gateway-web:latest image: eshoponabp/gateway-web:latest
container_name: gateway-web-container container_name: gateway-web-container
build: build:
@ -289,18 +286,20 @@ services:
dockerfile: gateways/web/src/EShopOnAbp.WebGateway/Dockerfile dockerfile: gateways/web/src/EShopOnAbp.WebGateway/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # Yarp can't resolve dns, needs to be overridden - ASPNETCORE_ENVIRONMENT=Docker # Yarp can't resolve dns, needs to be overridden
- ASPNETCORE_URLS=https://+:443;http://+:80; - ASPNETCORE_URLS=http://+:80;
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-gateway-web
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - App__CorsOrigins=https://eshop-st-web
- AuthServer__Authority=http://eshop-st-authserver
- AuthServer__RequireHttpsMetadata=false
- Redis__Configuration=redis - Redis__Configuration=redis
- ReverseProxy__Clusters__accountCluster__Destinations__destination1__Address=http://app-authserver - ReverseProxy__Clusters__accountCluster__Destinations__destination1__Address=http://eshop-st-authserver
- ReverseProxy__Clusters__identityCluster__Destinations__destination1__Address=http://identity-service - ReverseProxy__Clusters__identityCluster__Destinations__destination1__Address=http://eshop-st-identity
- ReverseProxy__Clusters__administrationCluster__Destinations__destination1__Address=http://administration-service - ReverseProxy__Clusters__administrationCluster__Destinations__destination1__Address=http://eshop-st-administration
- ReverseProxy__Clusters__catalogCluster__Destinations__destination1__Address=http://catalog-service - ReverseProxy__Clusters__catalogCluster__Destinations__destination1__Address=http://eshop-st-catalog
- ReverseProxy__Clusters__orderingCluster__Destinations__destination1__Address=http://ordering-service - ReverseProxy__Clusters__orderingCluster__Destinations__destination1__Address=http://eshop-st-ordering
- ReverseProxy__Clusters__feature-management-cluster__Destinations__destination1__Address=http://administration-service - ReverseProxy__Clusters__feature-management-cluster__Destinations__destination1__Address=http://eshop-st-administration
- ReverseProxy__Clusters__permission-management-cluster__Destinations__destination1__Address=http://administration-service - ReverseProxy__Clusters__permission-management-cluster__Destinations__destination1__Address=http://eshop-st-administration
- ReverseProxy__Clusters__setting-management-cluster__Destinations__destination1__Address=http://administration-service - ReverseProxy__Clusters__setting-management-cluster__Destinations__destination1__Address=http://eshop-st-administration
# ports: # ports:
# - "44372:443" # - "44372:443"
depends_on: depends_on:
@ -311,29 +310,26 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes: eshop-st-gateway-web-public:
# - ./certs:/root/certificate
gateway-web-public:
image: eshoponabp/gateway-web-public:latest image: eshoponabp/gateway-web-public:latest
container_name: gateway-web-public-container container_name: gateway-web-public-container
build: build:
context: ../../ context: ../../
dockerfile: gateways/web-public/src/EShopOnAbp.WebPublicGateway/Dockerfile dockerfile: gateways/web-public/src/EShopOnAbp.WebPublicGateway/Dockerfile
environment: environment:
- ASPNETCORE_ENVIRONMENT=Docker # Yarp can't resolve dns, needs to be overridden # - ASPNETCORE_ENVIRONMENT=Docker # Yarp can't resolve dns, needs to be overridden
- ASPNETCORE_URLS=https://+:443;http://+:80; - ASPNETCORE_URLS=http://+:80;
# - Kestrel__Certificates__Default__Path=/root/certificate/eshop-dk.pfx - App__SelfUrl=https://eshop-st-gateway-web-public
# - Kestrel__Certificates__Default__Password=8b6039b6-c67a-448b-977b-0ce6d3fcfd49 - AuthServer__Authority=http://eshop-st-authserver
- AuthServer__RequireHttpsMetadata=false
- Redis__Configuration=redis - Redis__Configuration=redis
- ReverseProxy__Clusters__accountCluster__Destinations__destination1__Address=http://app-authserver - ReverseProxy__Clusters__accountCluster__Destinations__destination1__Address=http://eshop-st-authserver
- ReverseProxy__Clusters__administrationCluster__Destinations__destination1__Address=http://administration-service - ReverseProxy__Clusters__administrationCluster__Destinations__destination1__Address=http://eshop-st-administration
- ReverseProxy__Clusters__catalogCluster__Destinations__destination1__Address=http://catalog-service - ReverseProxy__Clusters__catalogCluster__Destinations__destination1__Address=http://eshop-st-catalog
- ReverseProxy__Clusters__basketCluster__Destinations__destination1__Address=http://basket-service - ReverseProxy__Clusters__basketCluster__Destinations__destination1__Address=http://eshop-st-basket
- ReverseProxy__Clusters__orderingCluster__Destinations__destination1__Address=http://ordering-service - ReverseProxy__Clusters__orderingCluster__Destinations__destination1__Address=http://eshop-st-ordering
- ReverseProxy__Clusters__paymentCluster__Destinations__destination1__Address=http://payment-service - ReverseProxy__Clusters__paymentCluster__Destinations__destination1__Address=http://eshop-st-payment
- ReverseProxy__Clusters__productPictureCluster__Destinations__destination1__Address=http://catalog-service - ReverseProxy__Clusters__productPictureCluster__Destinations__destination1__Address=http://eshop-st-catalog
# ports:
# - "44373:443"
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy
@ -342,8 +338,6 @@ services:
restart: on-failure restart: on-failure
networks: networks:
- eshoponabp-network - eshoponabp-network
# volumes:
# - ./certs:/root/certificate
networks: networks:
eshoponabp-network: eshoponabp-network:

165
etc/docker/nginx/conf.d/default.conf

@ -1,15 +1,174 @@
server { server {
listen 80; listen 80;
listen 443 ssl; listen 443 ssl;
server_name administration-service; server_name eshop-st-administration;
ssl_certificate /etc/nginx/certs/app-cert.pem; ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-key.pem; ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on; ssl_prefer_server_ciphers on;
location / { location / {
proxy_pass http://administration-service:80; proxy_pass http://eshop-st-administration:80;
proxy_set_header Host $host; proxy_set_header Host $host;
} }
} }
server {
listen 80;
listen 443 ssl;
server_name eshop-st-identity;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-identity:80;
proxy_set_header Host $host;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-authserver;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-authserver:80;
proxy_set_header Host $host;
add_header from-ingress true;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-web;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-web:80;
proxy_set_header Host $host;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-public-web;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-public-web:80;
proxy_set_header Host $host;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-basket;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-basket:80;
proxy_set_header Host $host;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-catalog;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-catalog:80;
proxy_set_header Host $host;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-ordering;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-ordering:80;
proxy_set_header Host $host;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-payment;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-payment:80;
proxy_set_header Host $host;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-gateway-web-public;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-gateway-web-public:80;
proxy_set_header Host $host;
}
}
server {
listen 80;
listen 443 ssl;
server_name eshop-st-gateway-web;
ssl_certificate /etc/nginx/certs/app-cert.pem;
ssl_certificate_key /etc/nginx/certs/app-cert-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://eshop-st-gateway-web:80;
proxy_set_header Host $host;
}
}

23
etc/docker/nginx/dynamic-env.json

@ -0,0 +1,23 @@
{
"production": true,
"application": {
"baseUrl":"https://eshop-st-web",
"name": "EShopOnAbp",
"logoUrl": ""
},
"oAuthConfig": {
"issuer": "https://eshop-st-authserver",
"redirectUri": "https://eshop-st-web",
"clientId": "Web",
"responseType": "code",
"scope": "offline_access openid profile email phone AccountService IdentityService AdministrationService CatalogService OrderingService",
"strictDiscoveryDocumentValidation": false,
"requireHttps": false
},
"apis": {
"default": {
"url": "https://eshop-st-gateway-web",
"rootNamespace": "EShopOnAbp"
}
}
}
Loading…
Cancel
Save