diff --git a/.gitignore b/.gitignore index 9f460926c..963bee262 100644 --- a/.gitignore +++ b/.gitignore @@ -255,13 +255,5 @@ pub/ /src/Web/WebMVC/Properties/PublishProfiles/publish-module.psm1 /src/Services/Identity/eShopOnContainers.Identity/Properties/launchSettings.json -#docker-compose files are copied from nanowin or linux folders, so we need to ignore them -docker-compose.override.yml -docker-compose.vs.debug.yml -docker-compose.vs.release.yml -docker-compose.yml -docker-compose-external.override.yml -docker-compose-external.yml -docker-compose.ci.build.yml -#Same with Dockerfiles -/**/Dockerfile +#Ignore marker-file used to know which docker files we have. +.eshopdocker_* \ No newline at end of file diff --git a/docker-compose.ci.build.yml b/docker-compose.ci.build.yml new file mode 100644 index 000000000..0a4b6e345 --- /dev/null +++ b/docker-compose.ci.build.yml @@ -0,0 +1,9 @@ +version: '2' + +services: + ci-build: + image: microsoft/aspnetcore-build:1.0-1.1 + volumes: + - .:/src + working_dir: /src + command: /bin/bash -c "dotnet restore ./eShopOnContainers-ServicesAndWebApps.sln && dotnet publish ./eShopOnContainers-ServicesAndWebApps.sln -c Release -o ./obj/Docker/publish" diff --git a/docker-compose.override.yml b/docker-compose.override.yml new file mode 100644 index 000000000..909cf4172 --- /dev/null +++ b/docker-compose.override.yml @@ -0,0 +1,69 @@ +version: '2' + +services: + + basket.api: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ConnectionString=basket.data + #- identityUrl=http://13.88.8.119:5105 #Remote: VM Needs to have public access at 5105. + - identityUrl=http://identity.api:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. + ports: + - "5103:5103" + + catalog.api: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word + #- ExternalCatalogBaseUrl=http://13.88.8.119:5101 #Remote: VM Needs to have public access at 5105. + - ExternalCatalogBaseUrl=http://localhost:5101 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. + ports: + - "5101:5101" + + identity.api: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - SpaClient=http://localhost:5104 + - ConnectionStrings__DefaultConnection=Server=sql.data;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word + #- MvcClient=http://13.88.8.119:5100 #Remote: VM Needs to have public access at 5105. + - MvcClient=http://localhost:5100 #Local: You need to open your local dev-machine firewall at range 5100-5105. + ports: + - "5105:5105" + + ordering.api: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word + #- identityUrl=http://13.88.8.119:5105 #Remote: VM Needs to have public access at 5105. + - identityUrl=http://identity.api:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. + ports: + - "5102:5102" + + webspa: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - CatalogUrl=http://localhost:5101 + - OrderingUrl=http://localhost:5102 + #- IdentityUrl=http://13.88.8.119:5105 #Remote: VM Needs to have public access at 5105. + - IdentityUrl=http://localhost:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. + - BasketUrl=http://localhost:5103 + ports: + - "5104:5104" + + webmvc: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - CatalogUrl=http://catalog.api:5101 + - OrderingUrl=http://ordering.api:5102 + #- IdentityUrl=http://13.88.8.119:5105 #Remote: VM Needs to have public access at 5105. + - IdentityUrl=http://10.0.75.1:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. + - BasketUrl=http://basket.api:5103 + ports: + - "5100:5100" + + sql.data: + environment: + - SA_PASSWORD=Pass@word + - ACCEPT_EULA=Y + ports: + - "5433:1433" \ No newline at end of file diff --git a/docker-compose.vs.debug.yml b/docker-compose.vs.debug.yml new file mode 100644 index 000000000..2446fdb2c --- /dev/null +++ b/docker-compose.vs.debug.yml @@ -0,0 +1,92 @@ +version: '2' + +services: + basket.api: + image: eshop/basket.api:dev + build: + args: + source: ${DOCKER_BUILD_SOURCE} + environment: + - DOTNET_USE_POLLING_FILE_WATCHER=1 + volumes: + - ./src/Services/Basket/Basket.API:/app + - ~/.nuget/packages:/root/.nuget/packages:ro + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + catalog.api: + image: eshop/catalog.api:dev + build: + args: + source: ${DOCKER_BUILD_SOURCE} + environment: + - DOTNET_USE_POLLING_FILE_WATCHER=1 + volumes: + - ./src/Services/Catalog/Catalog.API:/app + - ~/.nuget/packages:/root/.nuget/packages:ro + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + identity.api: + image: eshop/identity.api:dev + build: + args: + source: ${DOCKER_BUILD_SOURCE} + environment: + - DOTNET_USE_POLLING_FILE_WATCHER=1 + volumes: + - ./src/Services/Identity/Identity.API:/app + - ~/.nuget/packages:/root/.nuget/packages:ro + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + ordering.api: + image: eshop/ordering.api:dev + build: + args: + source: ${DOCKER_BUILD_SOURCE} + environment: + - DOTNET_USE_POLLING_FILE_WATCHER=1 + volumes: + - ./src/Services/Ordering/Ordering.API:/app + - ~/.nuget/packages:/root/.nuget/packages:ro + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + webspa: + image: eshop/webspa:dev + build: + args: + source: ${DOCKER_BUILD_SOURCE} + environment: + - DOTNET_USE_POLLING_FILE_WATCHER=1 + volumes: + - ./src/Web/WebSPA:/app + - ~/.nuget/packages:/root/.nuget/packages:ro + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + webmvc: + image: eshop/webmvc:dev + build: + args: + source: ${DOCKER_BUILD_SOURCE} + environment: + - DOTNET_USE_POLLING_FILE_WATCHER=1 + volumes: + - ./src/Web/WebMVC:/app + - ~/.nuget/packages:/root/.nuget/packages:ro + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" diff --git a/docker-compose.vs.release.yml b/docker-compose.vs.release.yml new file mode 100644 index 000000000..4ea31f8ca --- /dev/null +++ b/docker-compose.vs.release.yml @@ -0,0 +1,62 @@ +version: '2' + +services: + basket.api: + build: + args: + source: ${DOCKER_BUILD_SOURCE} + volumes: + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + catalog.api: + build: + args: + source: ${DOCKER_BUILD_SOURCE} + volumes: + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + identity.api: + build: + args: + source: ${DOCKER_BUILD_SOURCE} + volumes: + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + ordering.api: + build: + args: + source: ${DOCKER_BUILD_SOURCE} + volumes: + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + webspa: + build: + args: + source: ${DOCKER_BUILD_SOURCE} + volumes: + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" + + webmvc: + build: + args: + source: ${DOCKER_BUILD_SOURCE} + volumes: + - ~/clrdbg:/clrdbg:ro + entrypoint: tail -f /dev/null + labels: + - "com.microsoft.visualstudio.targetoperatingsystem=linux" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..f3baeb346 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,63 @@ +version: '2' + +services: + basket.api: + image: eshop/basket.api + build: + context: ./src/Services/Basket/Basket.API + dockerfile: Dockerfile + depends_on: + - basket.data + - identity.api + + catalog.api: + image: eshop/catalog.api + build: + context: ./src/Services/Catalog/Catalog.API + dockerfile: Dockerfile + depends_on: + - sql.data + + identity.api: + image: eshop/identity.api + build: + context: ./src/Services/Identity/Identity.API + dockerfile: Dockerfile + depends_on: + - sql.data + + ordering.api: + image: eshop/ordering.api + build: + context: ./src/Services/Ordering/Ordering.API + dockerfile: Dockerfile + depends_on: + - sql.data + + webspa: + image: eshop/webspa + build: + context: ./src/Web/WebSPA + dockerfile: Dockerfile + depends_on: + - identity.api + - basket.api + + webmvc: + image: eshop/webmvc + build: + context: ./src/Web/WebMVC + dockerfile: Dockerfile + depends_on: + - catalog.api + - ordering.api + - identity.api + - basket.api + + sql.data: + image: microsoft/mssql-server-linux + + basket.data: + image: redis + ports: + - "6379:6379" diff --git a/docker-use-platform.ps1 b/docker-use-platform.ps1 index c0509aa37..7233c3c1d 100644 --- a/docker-use-platform.ps1 +++ b/docker-use-platform.ps1 @@ -5,6 +5,7 @@ Param( ) $scriptPath = Split-Path $script:MyInvocation.MyCommand.Path +$Platform = $Platform.ToLowerInvariant() $SourcePerPlatformDockerFilesPath = "$ScriptPath\_docker\$Platform\extradf" $TargetPerPlatformDockerFilesPath = "$ScriptPath\extradf" @@ -42,4 +43,7 @@ Copy-Item "$ScriptPath\src\Web\WebSPA\Dockerfile.$Platform" "$ScriptPath\src\We Write-Host "Replacing Docker-compose" Copy-Item "$ScriptPath\_docker\$Platform\*.yml" "$ScriptPath\" -Force +Remove-Item "$ScriptPath\.eshopdocker_*" -Force -ErrorAction SilentlyContinue +New-Item "$ScriptPath\.eshopdocker_$Platform" -ItemType File | Out-Null + Write-Host "Done. Docker files are set for platform: $Platform" \ No newline at end of file diff --git a/src/Services/Basket/Basket.API/Dockerfile b/src/Services/Basket/Basket.API/Dockerfile new file mode 100644 index 000000000..bfc575ee1 --- /dev/null +++ b/src/Services/Basket/Basket.API/Dockerfile @@ -0,0 +1,6 @@ +FROM microsoft/aspnetcore:1.1 +ARG source +WORKDIR /app +EXPOSE 80 +COPY ${source:-obj/Docker/publish} . +ENTRYPOINT ["dotnet", "Basket.API.dll"] diff --git a/src/Services/Catalog/Catalog.API/Dockerfile b/src/Services/Catalog/Catalog.API/Dockerfile new file mode 100644 index 000000000..67f47d60d --- /dev/null +++ b/src/Services/Catalog/Catalog.API/Dockerfile @@ -0,0 +1,6 @@ +FROM microsoft/aspnetcore:1.1 +ARG source +WORKDIR /app +EXPOSE 80 +COPY ${source:-obj/Docker/publish} . +ENTRYPOINT ["dotnet", "Catalog.API.dll"] diff --git a/src/Services/Identity/Identity.API/Dockerfile b/src/Services/Identity/Identity.API/Dockerfile new file mode 100644 index 000000000..5ef6b4064 --- /dev/null +++ b/src/Services/Identity/Identity.API/Dockerfile @@ -0,0 +1,6 @@ +FROM microsoft/aspnetcore:1.1 +ARG source +WORKDIR /app +EXPOSE 80 +COPY ${source:-obj/Docker/publish} . +ENTRYPOINT ["dotnet", "Identity.API.dll"] diff --git a/src/Services/Ordering/Ordering.API/Dockerfile b/src/Services/Ordering/Ordering.API/Dockerfile new file mode 100644 index 000000000..719bff2f4 --- /dev/null +++ b/src/Services/Ordering/Ordering.API/Dockerfile @@ -0,0 +1,6 @@ +FROM microsoft/aspnetcore:1.1 +ARG source +WORKDIR /app +EXPOSE 80 +COPY ${source:-obj/Docker/publish} . +ENTRYPOINT ["dotnet", "Ordering.API.dll"] diff --git a/src/Web/WebMVC/Dockerfile b/src/Web/WebMVC/Dockerfile new file mode 100644 index 000000000..48252930c --- /dev/null +++ b/src/Web/WebMVC/Dockerfile @@ -0,0 +1,6 @@ +FROM microsoft/aspnetcore:1.1 +ARG source +WORKDIR /app +EXPOSE 80 +COPY ${source:-obj/Docker/publish} . +ENTRYPOINT ["dotnet", "WebMVC.dll"] diff --git a/src/Web/WebSPA/Dockerfile b/src/Web/WebSPA/Dockerfile new file mode 100644 index 000000000..03634a256 --- /dev/null +++ b/src/Web/WebSPA/Dockerfile @@ -0,0 +1,6 @@ +FROM microsoft/aspnetcore:1.1 +ARG source +WORKDIR /app +EXPOSE 80 +COPY ${source:-obj/Docker/publish} . +ENTRYPOINT ["dotnet", "WebSPA.dll"]