【发布时间】:2021-08-11 12:45:51
【问题描述】:
我有 docker-images 如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
user135/todoapi-Go latest 0b4cd5e70a9b 18 seconds ago 9.43MB
user135/todoapi v1.0.0 5a3a2cfe9692 2 weeks ago 210MB
我确实比较了来自 user135/todoapi-Go (Golang) 的 docker 图像的大小非常小,而不是 (C#/Dotnet) 的 user135/todoapi,而且我检查了我的其他 Dotnet 应用程序是用 docker 构建的有 200mb++大小,
我将这个 Dockerfile 用于我的 dotnet 应用程序,它是在我为项目添加 Docker 支持时从 Visual Studio 生成的:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
ENV ASPNETCORE_URLS http://+:5000
EXPOSE 5000
EXPOSE 5001
ENV TZ=Asia/Jakarta
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["TodoApi.csproj", ""]
RUN dotnet restore "./TodoApi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "TodoApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "TodoApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TodoApi.dll"]
我的 Go 应用程序 Dockerfile
FROM golang:alpine AS builder
RUN apk update && apk add --no-cache git
WORKDIR $GOPATH/src/mypackage/myapp/
ENV CGO_ENABLED=0
COPY . .
RUN go get -d -v
RUN go build -o /go/bin/main
FROM scratch
COPY --from=builder /go/bin/main /go/bin/main
ENTRYPOINT ["/go/bin/main"]
我的问题在这里:
- 如何使用小尺寸 docker 图像构建 dotnet 应用程序?
- 这会影响应用或容器的性能吗?
【问题讨论】:
标签: c# .net docker asp.net-core dockerfile