diff --git a/Dockerfile b/Dockerfile index a886c2d..6a84250 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,8 @@ -FROM microsoft/dotnet:2.2-sdk +FROM microsoft/dotnet:2.2-sdk AS build COPY . ./docker-test WORKDIR /docker-test/ -RUN dotnet build -c Release -ENTRYPOINT ["dotnet", "run", "-c", "Release", "--no-build"] \ No newline at end of file +RUN dotnet build -c Release -o output + +FROM microsoft/dotnet:2.2-runtime AS runtime +COPY --from=build /docker-test/output . +ENTRYPOINT ["dotnet", "docker-test.dll"] \ No newline at end of file diff --git a/README.md b/README.md index eccdfd8..5d922e4 100644 --- a/README.md +++ b/README.md @@ -42,4 +42,24 @@ REPOSITORY TAG IMAGE ID CREATED docker-test latest 8e0d17fcfbbb 2 hours ago 1.74GB ``` -1.74 GB que deberia ser utilizada solo para un Hola Mundo !!! \ No newline at end of file +1.74 GB que deberia ser utilizada solo para un Hola Mundo !!!, ahora con MultiStage se puede utilizar una imagen para "compilar" y otra imagen para correr la aplicación que por supuesto utiliza mucho menos espacio. + +``` +FROM microsoft/dotnet:2.2-sdk AS build +COPY . ./docker-test +WORKDIR /docker-test/ +RUN dotnet build -c Release -o output + +FROM microsoft/dotnet:2.2-runtime AS runtime +COPY --from=build /docker-test/output . +ENTRYPOINT ["dotnet", "docker-test.dll"] +``` + +con esto logramos que la imagen de la aplicacion sea de solo 180 MG + +``` +REPOSITORY TAG IMAGE ID CREATED SIZE + 63fb9180b95b 2 minutes ago 180MB +``` + +Podriamos pensar que 180 MB es mucho para un simple "Hola Mundo", pero considerando que no se requiere nada para poder ejecutar solo Docker, nos olvidamos de ... "en mi maquina funciona". \ No newline at end of file