Minimal Docker container
Create the smallest possible Docker container
With Docker multi stage, you can use multiple base image (call as builder) to build necessary files, assets and copy stuff over to final image after.
Here is some tricks:
- You can use
node:alpine
,bitnami-docker-node
or other smaller images if it's enough to build your app. - Copy necessary files only
- Base node docker image included
yarn
, it's better some time (ex: buildnode-sass
)
Example:
# node builder
FROM node:8.9.3 as nodebuilder
RUN mkdir publish
COPY gulpfile.js webpack.config.js package.json publish/
COPY ./Vue publish/Vue
COPY ./wwwroot publish/wwwroot
WORKDIR /publish
RUN cd /publish && yarn install \
&& yarn gulp all \
&& yarn run build
# dotnet builder
FROM microsoft/dotnet:2.0.0-sdk as builder
RUN mkdir publish
COPY . publish
WORKDIR publish
RUN dotnet restore <app_name>.csproj
RUN dotnet publish <app_name>.csproj --configuration Release --output ./out
# final image
FROM microsoft/dotnet:2.0.0-runtime
WORKDIR /dotnetapp
COPY --from=builder publish/out .
COPY --from=nodebuilder publish/wwwroot ./wwwroot
ENTRYPOINT ["dotnet", "<app_name>.dll"]