Skip to content

Commit

Permalink
Converts to use multi-stage build Dockerfile
Browse files Browse the repository at this point in the history
1. Changes the build context of all services to the root level to be
able to access the dependencies for each project.
2. Commented out the prepublish scripts, these steps are moved into the
Dockerfile

Did not change any script yet, need help to identify what scripts we
need to change.
  • Loading branch information
yanchenw authored and yanchenw committed Nov 27, 2017
1 parent 127864d commit 091ed81
Show file tree
Hide file tree
Showing 33 changed files with 297 additions and 142 deletions.
24 changes: 24 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
.dockerignore
.env
.git
.gitignore
.vs
.vscode
docker-compose.yml
docker-compose.*.yml
vsts-docs
test
ServiceFabric
readme
k8s
img
docs
deploy
Components
cli-windows
cli-mac
cli-linux
**/bin/
**/obj/
**/node_modules/
**/bower_components/
1 change: 1 addition & 0 deletions docker-compose.dcproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<ProjectVersion>2.0</ProjectVersion>
</PropertyGroup>
<ItemGroup>
<None Include=".dockerignore" />
<None Include="docker-compose.ci.build.yml" />
<None Include="docker-compose.override.yml">
<DependentUpon>docker-compose.yml</DependentUpon>
Expand Down
40 changes: 20 additions & 20 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ services:
basket.api:
image: eshop/basket.api:${TAG:-latest}
build:
context: ./src/Services/Basket/Basket.API
dockerfile: Dockerfile
context: .
dockerfile: ./src/Services/Basket/Basket.API/Dockerfile
depends_on:
- basket.data
- identity.api
Expand All @@ -15,34 +15,34 @@ services:
catalog.api:
image: eshop/catalog.api:${TAG:-latest}
build:
context: ./src/Services/Catalog/Catalog.API
dockerfile: Dockerfile
context: .
dockerfile: ./src/Services/Catalog/Catalog.API/Dockerfile
depends_on:
- sql.data
- rabbitmq

identity.api:
image: eshop/identity.api:${TAG:-latest}
build:
context: ./src/Services/Identity/Identity.API
dockerfile: Dockerfile
context: .
dockerfile: ./src/Services/Identity/Identity.API/Dockerfile
depends_on:
- sql.data

ordering.api:
image: eshop/ordering.api:${TAG:-latest}
build:
context: ./src/Services/Ordering/Ordering.API
dockerfile: Dockerfile
context: .
dockerfile: ./src/Services/Ordering/Ordering.API/Dockerfile
depends_on:
- sql.data
- rabbitmq

marketing.api:
image: eshop/marketing.api:${TAG:-latest}
build:
context: ./src/Services/Marketing/Marketing.API
dockerfile: Dockerfile
context: .
dockerfile: ./src/Services/Marketing/Marketing.API/Dockerfile
depends_on:
- sql.data
- nosql.data
Expand All @@ -52,8 +52,8 @@ services:
webspa:
image: eshop/webspa:${TAG:-latest}
build:
context: ./src/Web/WebSPA
dockerfile: Dockerfile
context: .
dockerfile: ./src/Web/WebSPA/Dockerfile
depends_on:
- catalog.api
- ordering.api
Expand All @@ -64,8 +64,8 @@ services:
webmvc:
image: eshop/webmvc:${TAG:-latest}
build:
context: ./src/Web/WebMVC
dockerfile: Dockerfile
context: .
dockerfile: ./src/Web/WebMVC/Dockerfile
depends_on:
- catalog.api
- ordering.api
Expand All @@ -76,22 +76,22 @@ services:
webstatus:
image: eshop/webstatus:${TAG:-latest}
build:
context: ./src/Web/WebStatus
dockerfile: Dockerfile
context: .
dockerfile: ./src/Web/WebStatus/Dockerfile

payment.api:
image: eshop/payment.api:${TAG:-latest}
build:
context: ./src/Services/Payment/Payment.API
dockerfile: Dockerfile
context: .
dockerfile: ./src/Services/Payment/Payment.API/Dockerfile
depends_on:
- rabbitmq

locations.api:
image: eshop/locations.api:${TAG:-latest}
build:
context: ./src/Services/Location/Locations.API
dockerfile: Dockerfile
context: .
dockerfile: ./src/Services/Location/Locations.API/Dockerfile
depends_on:
- nosql.data
- rabbitmq
Expand Down
3 changes: 0 additions & 3 deletions src/Services/Basket/Basket.API/.dockerignore

This file was deleted.

9 changes: 0 additions & 9 deletions src/Services/Basket/Basket.API/Basket.API.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
<Content Update="web.config">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include=".dockerignore">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>

<ItemGroup>
Expand All @@ -33,10 +30,4 @@
<ProjectReference Include="..\..\..\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks\Microsoft.Extensions.HealthChecks.csproj" />
</ItemGroup>

<ItemGroup>
<None Update="Dockerfile">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
25 changes: 22 additions & 3 deletions src/Services/Basket/Basket.API/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
FROM microsoft/aspnetcore:2.0
ARG source
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY eShopOnContainers-ServicesAndWebApps.sln ./
COPY src/Services/Basket/Basket.API/Basket.API.csproj src/Services/Basket/Basket.API/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/Microsoft.AspNetCore.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/
COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj src/BuildingBlocks/EventBus/EventBusRabbitMQ/
COPY src/BuildingBlocks/EventBus/EventBus/EventBus.csproj src/BuildingBlocks/EventBus/EventBus/
COPY src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj src/BuildingBlocks/EventBus/EventBusServiceBus/
RUN dotnet restore
COPY . .
WORKDIR /src/src/Services/Basket/Basket.API
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Basket.API.dll"]
3 changes: 0 additions & 3 deletions src/Services/Catalog/Catalog.API/.dockerignore

This file was deleted.

3 changes: 0 additions & 3 deletions src/Services/Catalog/Catalog.API/Catalog.API.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,6 @@
</ItemGroup>

<ItemGroup>
<None Update="Dockerfile">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Pics\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down
29 changes: 26 additions & 3 deletions src/Services/Catalog/Catalog.API/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
FROM microsoft/aspnetcore:2.0
ARG source
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY eShopOnContainers-ServicesAndWebApps.sln ./
COPY src/Services/Catalog/Catalog.API/Catalog.API.csproj src/Services/Catalog/Catalog.API/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/Microsoft.AspNetCore.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/
COPY src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj src/BuildingBlocks/EventBus/IntegrationEventLogEF/
COPY src/BuildingBlocks/EventBus/EventBus/EventBus.csproj src/BuildingBlocks/EventBus/EventBus/
COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj src/BuildingBlocks/EventBus/EventBusRabbitMQ/
COPY src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj src/BuildingBlocks/EventBus/EventBusServiceBus/
COPY src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj src/BuildingBlocks/WebHostCustomization/WebHost.Customization/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.AzureStorage/Microsoft.Extensions.HealthChecks.AzureStorage.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.AzureStorage/
RUN dotnet restore
COPY . .
WORKDIR /src/src/Services/Catalog/Catalog.API
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Catalog.API.dll"]
3 changes: 0 additions & 3 deletions src/Services/Identity/Identity.API/.dockerignore

This file was deleted.

25 changes: 22 additions & 3 deletions src/Services/Identity/Identity.API/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
FROM microsoft/aspnetcore:2.0.0
ARG source
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY eShopOnContainers-ServicesAndWebApps.sln ./
COPY src/Services/Identity/Identity.API/Identity.API.csproj src/Services/Identity/Identity.API/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/Microsoft.AspNetCore.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/
COPY src/BuildingBlocks/DataProtection/DataProtection/DataProtection.csproj src/BuildingBlocks/DataProtection/DataProtection/
COPY src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj src/BuildingBlocks/WebHostCustomization/WebHost.Customization/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/
RUN dotnet restore
COPY . .
WORKDIR /src/src/Services/Identity/Identity.API
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Identity.API.dll"]
3 changes: 0 additions & 3 deletions src/Services/Identity/Identity.API/Identity.API.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,6 @@
</ItemGroup>

<ItemGroup>
<None Update="Dockerfile">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Setup\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down
3 changes: 0 additions & 3 deletions src/Services/Location/Locations.API/.dockerignore

This file was deleted.

25 changes: 22 additions & 3 deletions src/Services/Location/Locations.API/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
FROM microsoft/aspnetcore:2.0
ARG source
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY eShopOnContainers-ServicesAndWebApps.sln ./
COPY src/Services/Location/Locations.API/Locations.API.csproj src/Services/Location/Locations.API/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/Microsoft.AspNetCore.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/
COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj src/BuildingBlocks/EventBus/EventBusRabbitMQ/
COPY src/BuildingBlocks/EventBus/EventBus/EventBus.csproj src/BuildingBlocks/EventBus/EventBus/
COPY src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj src/BuildingBlocks/EventBus/EventBusServiceBus/
RUN dotnet restore
COPY . .
WORKDIR /src/src/Services/Location/Locations.API
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Locations.API.dll"]
3 changes: 0 additions & 3 deletions src/Services/Marketing/Marketing.API/.dockerignore

This file was deleted.

27 changes: 24 additions & 3 deletions src/Services/Marketing/Marketing.API/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,27 @@
FROM microsoft/aspnetcore:2.0
ARG source
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY eShopOnContainers-ServicesAndWebApps.sln ./
COPY src/Services/Marketing/Marketing.API/Marketing.API.csproj src/Services/Marketing/Marketing.API/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/Microsoft.AspNetCore.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/
COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj src/BuildingBlocks/EventBus/EventBusRabbitMQ/
COPY src/BuildingBlocks/EventBus/EventBus/EventBus.csproj src/BuildingBlocks/EventBus/EventBus/
COPY src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj src/BuildingBlocks/EventBus/EventBusServiceBus/
COPY src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj src/BuildingBlocks/WebHostCustomization/WebHost.Customization/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.AzureStorage/Microsoft.Extensions.HealthChecks.AzureStorage.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.AzureStorage/
RUN dotnet restore
COPY . .
WORKDIR /src/src/Services/Marketing/Marketing.API
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Marketing.API.dll"]
3 changes: 0 additions & 3 deletions src/Services/Marketing/Marketing.API/Marketing.API.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
</ItemGroup>

<ItemGroup>
<None Update="Dockerfile">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Pics\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down
3 changes: 0 additions & 3 deletions src/Services/Ordering/Ordering.API/.dockerignore

This file was deleted.

30 changes: 27 additions & 3 deletions src/Services/Ordering/Ordering.API/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,30 @@
FROM microsoft/aspnetcore:2.0
ARG source
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY eShopOnContainers-ServicesAndWebApps.sln ./
COPY src/Services/Ordering/Ordering.API/Ordering.API.csproj src/Services/Ordering/Ordering.API/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/Microsoft.AspNetCore.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/
COPY src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj src/BuildingBlocks/EventBus/IntegrationEventLogEF/
COPY src/BuildingBlocks/EventBus/EventBus/EventBus.csproj src/BuildingBlocks/EventBus/EventBus/
COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj src/BuildingBlocks/EventBus/EventBusRabbitMQ/
COPY src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj src/Services/Ordering/Ordering.Domain/
COPY src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj src/BuildingBlocks/EventBus/EventBusServiceBus/
COPY src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj src/BuildingBlocks/WebHostCustomization/WebHost.Customization/
COPY src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj src/Services/Ordering/Ordering.Infrastructure/
COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/
RUN dotnet restore
COPY . .
WORKDIR /src/src/Services/Ordering/Ordering.API
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Ordering.API.dll"]
Loading

0 comments on commit 091ed81

Please sign in to comment.