forked from dotnet-architecture/eShopOnContainers
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
scripts to build individual services, readme files for all services a…
…nd clients, compose in all projects, fix build problems (Dependent seeds), solve some kwnon build problems in solution (identity on localhost, ...)
- Loading branch information
Carlos Cañizares Estévez
committed
Dec 7, 2016
1 parent
0a344f6
commit 42f3537
Showing
84 changed files
with
1,807 additions
and
695 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,57 @@ | ||
# Containerized eShop | ||
Sample reference containerized application, cross-platform and microservices architecture. | ||
Powered by .NET Core, Docker and Docker Swarm mode | ||
Powered by Microsoft | ||
|
||
<img src="img/eshop_cover.png"> | ||
|
||
#Overview | ||
In this repo you will fin samples that will help you to get introduced into <b>.net core</b>, microservices environment and <b>docker</b>. | ||
|
||
|
||
#Tools | ||
#### Windows | ||
<a href='https://github.com/docker/toolbox/releases/download/v1.12.3/DockerToolbox-1.12.3.exe'>Docker tools for windows</a> | ||
|
||
####Mac | ||
<a href='https://github.com/docker/toolbox/releases/download/v1.12.3/DockerToolbox-1.12.3.pkg'>Docker tools for Mac</a> | ||
|
||
##Set up Cpu and Memory | ||
In this demo we will run 3 instances of SQL Server, 6 asp.net core applications and 1 redis server it's important to set up properly the Cpu and Ram assigned to docker. This can be set, once installed docker in your device through the whale icon, right click, settings and in the Advanced option you will need to adjust the default to the new values shown in the image: | ||
|
||
<img src="img/docker_settings.png"> | ||
|
||
#Demo | ||
The demo scenario is based on a ecommerce shop, each service is a .net core web application (basket, catalog, ordering, identity) and this services are consumed by differents web and mobile applications. | ||
|
||
MVC Application: Its an Mvc 6 development where you can find good samples about how to work with microservices in a MVC asp.net core application. | ||
|
||
SPA Application: Developed with Angular2, Typescript and Mvc 6, is another different aproach in web on how to work in a Microservices oriented solution. | ||
|
||
Xamarin Application (Ios, Windows, Android): Its a client application that run in mobile devices (ios, android, windows) and you can find another example on how to build a microservices oriented application. | ||
|
||
#Deploy goblal | ||
In the global directory you will find the scripts needed to run and deploy the demo into your local docker infraestructure. The steps: | ||
|
||
|
||
- <a href='build-images.ps1'>build-images.ps1</a> <b>Build .net applications and docker images</b>: This power shell script that you will find in the <u>root directory of the solution</u> is the responsible of building .net applications and package in a pub folder and use docker commands to build the images needed to run the previously packaged .net applications. | ||
|
||
- <b>Compose containers in your docker local VM</b>: Finally you have to open your favourite command tool <u>pointing to the root directory of the solution</u> where docker-compose.yml file is located and run the command `docker-compose up` | ||
|
||
#Run | ||
Once the deploy process of docker-compose finishes you have to be able to access the services in this urls from your machine: | ||
- Web: http://localhost:5100 | ||
- Web Spa: http://localhost:5104 | ||
- Catalog service: http://localhost:5101 | ||
- Orders service: http://localhost:5102 | ||
- Basket service: http://localhost:5103 | ||
- Identity service: http://localhost:5105 | ||
- Orders data (SQL Server): Server=tcp:localhost,5432;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word; | ||
- Catalog data (SQL Server): Server=tcp:localhost,5434;Database=CatalogDB;User Id=sa;Password=Pass@word | ||
- Identity data (SQL Server): Server=localhost,5433;Database=aspnet-Microsoft.eShopOnContainers;User Id=sa;Password=Pass@word | ||
- Basket data (Redis): listening in localhost:6379 | ||
|
||
#Deploy individiual services into docker | ||
Under each project root you will find a readme.md file as this that describes how to run and deploy the service individually into a docker container. | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
param([switch]$Elevated) | ||
function Check-Admin { | ||
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent()) | ||
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) | ||
} | ||
if ((Check-Admin) -eq $false) { | ||
if ($elevated) | ||
{ | ||
# could not elevate, quit | ||
} | ||
|
||
else { | ||
|
||
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition)) | ||
} | ||
exit | ||
} | ||
|
||
ac -Encoding UTF8 C:\Windows\system32\drivers\etc\hosts "127.0.0.1 identity.service" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path | ||
|
||
Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow | ||
|
||
#*** Basket service image *** | ||
$basketPathToJson = $scriptPath + "\src\Services\Basket\Basket.API\project.json" | ||
Write-Host "basketPathToJson is $basketPathToJson" -ForegroundColor Yellow | ||
$basketPathToPub = $scriptPath + "\pub\basket" | ||
Write-Host "basketPathToPub is $basketPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $basketPathToJson | ||
dotnet build $basketPathToJson | ||
dotnet publish $basketPathToJson -o $basketPathToPub | ||
|
||
docker build -t eshop/basket.api $basketPathToPub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path | ||
|
||
Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow | ||
|
||
#*** Catalog service image *** | ||
$catalogPathToJson = $scriptPath + "\src\Services\Catalog\Catalog.API\project.json" | ||
Write-Host "catalogPathToJson is $catalogPathToJson" -ForegroundColor Yellow | ||
$catalogPathToPub = $scriptPath + "\pub\catalog" | ||
Write-Host "catalogPathToPub is $catalogPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $catalogPathToJson | ||
dotnet build $catalogPathToJson | ||
dotnet publish $catalogPathToJson -o $catalogPathToPub | ||
|
||
docker build -t eshop/catalog.api $catalogPathToPub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path | ||
|
||
Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow | ||
|
||
# *** identitySvc image *** | ||
$identitySvcPathToJson = $scriptPath + "\src\Services\Identity\eShopOnContainers.Identity\project.json" | ||
Write-Host "identitySvcPathToJson is $identitySvcPathToJson" -ForegroundColor Yellow | ||
$identitySvcPathToPub = $scriptPath + "\pub\identity" | ||
Write-Host "identitySvcPathToPub is $identitySvcPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $identitySvcPathToJson | ||
dotnet build $identitySvcPathToJson | ||
dotnet publish $identitySvcPathToJson -o $identitySvcPathToPub | ||
|
||
docker build -t eshop/identity $identitySvcPathToPub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path | ||
|
||
Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow | ||
|
||
#*** Ordering service image *** | ||
$orderingPathToJson = $scriptPath + "\src\Services\Ordering\Ordering.API\project.json" | ||
Write-Host "orderingPathToJson is $orderingPathToJson" -ForegroundColor Yellow | ||
$orderingPathToPub = $scriptPath + "\pub\ordering" | ||
Write-Host "orderingPathToPub is $orderingPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $orderingPathToJson | ||
dotnet build $orderingPathToJson | ||
dotnet publish $orderingPathToJson -o $orderingPathToPub | ||
|
||
docker build -t eshop/ordering.api $orderingPathToPub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path | ||
|
||
Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow | ||
|
||
$pubFolderToDelete = $scriptPath + "\pub" | ||
remove-item -path $pubFolderToDelete -Force -Recurse -ErrorAction SilentlyContinue | ||
|
||
# *** WebSPA image *** | ||
$webSPAPathToJson = $scriptPath + "\src\Web\WebSPA\eShopOnContainers.WebSPA\project.json" | ||
Write-Host "webSPAPathToJson is $webSPAPathToJson" -ForegroundColor Yellow | ||
$webSPAPathToPub = $scriptPath + "\pub\webSPA" | ||
$webSPAPathToNpmBat = $scriptPath + "\src\Web\WebSPA\eShopOnContainers.WebSPA\buildspa.bat" | ||
Write-Host "webSPAPathToPub is $webSPAPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $webSPAPathToJson | ||
dotnet build $webSPAPathToJson | ||
# Start-Process "cmd.exe" "/c " + $webSPAPathToNpmBat | ||
dotnet publish $webSPAPathToJson -o $webSPAPathToPub | ||
|
||
# *** identitySvc image *** | ||
$identitySvcPathToJson = $scriptPath + "\src\Services\Identity\eShopOnContainers.Identity\project.json" | ||
Write-Host "identitySvcPathToJson is $identitySvcPathToJson" -ForegroundColor Yellow | ||
$identitySvcPathToPub = $scriptPath + "\pub\identity" | ||
Write-Host "identitySvcPathToPub is $identitySvcPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $identitySvcPathToJson | ||
dotnet build $identitySvcPathToJson | ||
dotnet publish $identitySvcPathToJson -o $identitySvcPathToPub | ||
|
||
|
||
#*** Catalog service image *** | ||
$catalogPathToJson = $scriptPath + "\src\Services\Catalog\Catalog.API\project.json" | ||
Write-Host "catalogPathToJson is $catalogPathToJson" -ForegroundColor Yellow | ||
$catalogPathToPub = $scriptPath + "\pub\catalog" | ||
Write-Host "catalogPathToPub is $catalogPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $catalogPathToJson | ||
dotnet build $catalogPathToJson | ||
dotnet publish $catalogPathToJson -o $catalogPathToPub | ||
|
||
#*** Ordering service image *** | ||
$orderingPathToJson = $scriptPath + "\src\Services\Ordering\Ordering.API\project.json" | ||
Write-Host "orderingPathToJson is $orderingPathToJson" -ForegroundColor Yellow | ||
$orderingPathToPub = $scriptPath + "\pub\ordering" | ||
Write-Host "orderingPathToPub is $orderingPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $orderingPathToJson | ||
dotnet build $orderingPathToJson | ||
dotnet publish $orderingPathToJson -o $orderingPathToPub | ||
|
||
#*** Basket service image *** | ||
$basketPathToJson = $scriptPath + "\src\Services\Basket\Basket.API\project.json" | ||
Write-Host "basketPathToJson is $basketPathToJson" -ForegroundColor Yellow | ||
$basketPathToPub = $scriptPath + "\pub\basket" | ||
Write-Host "basketPathToPub is $basketPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $basketPathToJson | ||
dotnet build $basketPathToJson | ||
dotnet publish $basketPathToJson -o $basketPathToPub | ||
|
||
#!/bin/bash | ||
# Delete all containers | ||
docker rm $(docker ps -a -q) -f | ||
# Delete all images | ||
docker rmi $(docker images -q) | ||
|
||
#*** build docker images *** | ||
docker build -t eshop/catalog.api $catalogPathToPub | ||
docker build -t eshop/ordering.api $orderingPathToPub | ||
docker build -t eshop/basket.api $basketPathToPub | ||
docker build -t eshop/webspa $webSPAPathToPub | ||
docker build -t eshop/identity $identitySvcPathToPub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path | ||
|
||
Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow | ||
|
||
$pubFolderToDelete = $scriptPath + "..\..\pub" | ||
remove-item -path $pubFolderToDelete -Force -Recurse -ErrorAction SilentlyContinue | ||
#cmd /c "rd /s pub" /q | ||
|
||
# *** WebMVC image *** | ||
$webPathToJson = $scriptPath + "\src\Web\WebMVC\project.json" | ||
Write-Host "webPathToJson is $webPathToJson" -ForegroundColor Yellow | ||
$webPathToPub = $scriptPath + "\pub\webMVC" | ||
Write-Host "webPathToPub is $webPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $webPathToJson | ||
dotnet build $webPathToJson | ||
dotnet publish $webPathToJson -o $webPathToPub | ||
|
||
# *** identitySvc image *** | ||
$identitySvcPathToJson = $scriptPath + "\src\Services\Identity\eShopOnContainers.Identity\project.json" | ||
Write-Host "identitySvcPathToJson is $identitySvcPathToJson" -ForegroundColor Yellow | ||
$identitySvcPathToPub = $scriptPath + "\pub\identity" | ||
Write-Host "identitySvcPathToPub is $identitySvcPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $identitySvcPathToJson | ||
dotnet build $identitySvcPathToJson | ||
dotnet publish $identitySvcPathToJson -o $identitySvcPathToPub | ||
|
||
#*** Catalog service image *** | ||
$catalogPathToJson = $scriptPath + "\src\Services\Catalog\Catalog.API\project.json" | ||
Write-Host "catalogPathToJson is $catalogPathToJson" -ForegroundColor Yellow | ||
$catalogPathToPub = $scriptPath + "\pub\catalog" | ||
Write-Host "catalogPathToPub is $catalogPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $catalogPathToJson | ||
dotnet build $catalogPathToJson | ||
dotnet publish $catalogPathToJson -o $catalogPathToPub | ||
|
||
#*** Ordering service image *** | ||
$orderingPathToJson = $scriptPath + "\src\Services\Ordering\Ordering.API\project.json" | ||
Write-Host "orderingPathToJson is $orderingPathToJson" -ForegroundColor Yellow | ||
$orderingPathToPub = $scriptPath + "\pub\ordering" | ||
Write-Host "orderingPathToPub is $orderingPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $orderingPathToJson | ||
dotnet build $orderingPathToJson | ||
dotnet publish $orderingPathToJson -o $orderingPathToPub | ||
|
||
#*** Basket service image *** | ||
$basketPathToJson = $scriptPath + "\src\Services\Basket\Basket.API\project.json" | ||
Write-Host "basketPathToJson is $basketPathToJson" -ForegroundColor Yellow | ||
$basketPathToPub = $scriptPath + "\pub\basket" | ||
Write-Host "basketPathToPub is $basketPathToPub" -ForegroundColor Yellow | ||
|
||
Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue | ||
dotnet restore $basketPathToJson | ||
dotnet build $basketPathToJson | ||
dotnet publish $basketPathToJson -o $basketPathToPub | ||
|
||
#!/bin/bash | ||
# Delete all containers | ||
docker rm $(docker ps -a -q) -f | ||
# Delete all images | ||
docker rmi $(docker images -q) | ||
|
||
#*** build docker images *** | ||
docker build -t eshop/web $webPathToPub | ||
docker build -t eshop/catalog.api $catalogPathToPub | ||
docker build -t eshop/ordering.api $orderingPathToPub | ||
docker build -t eshop/basket.api $basketPathToPub | ||
docker build -t eshop/identity $identitySvcPathToPub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.