在 Amazon Linux 2 AMI 上,可以使用 Microsoft 提供的官方 ASP.NET Core 基础镜像 mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim。此基础镜像基于 Debian Buster,因此可以在 Amazon Linux 2 上运行。以下是使用该基础镜像的 Dockerfile 示例:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["MyApp.csproj", ""]
RUN dotnet restore "./MyApp.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
在 Dockerfile 中,我们首先指定了基础镜像(FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base),然后在其中设置工作目录和暴露端口。接下来,我们使用另一个基础镜像(FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build)来生成应用程序,并定义了要运行的 ENTRYPOINT。
使用 Dockerfile 后,我们可以使用以下命令来生成镜像:
docker build -t myapp:latest .
生成镜像后,我们就可以在 Amazon Linux 2 AMI 上运行该镜像,使用类似于以下命令的 docker run 命令:
docker run -p 80:80 myapp:latest