如何在Docker容器中运行一个C#应用程序?

在Docker容器中运行一个C#应用程序,可以通过以下步骤进行:

  1. 编写C#应用程序:
using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

编译为Program.csproj项目。

  1. 构建Dockerfile:
Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore 

COPY . .
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2  
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "HelloWorld.dll"]

此Dockerfile采用多阶段构建。Core SDK镜像构建应用,Core Runtime镜像仅复制构建好的程序集,并指定为入口点。

  1. 构建镜像:
docker build -t dotnet-app .
  1. 运行容器:
docker run -it dotnet-app

输出:

Hello World!
  1. 在Docker Compose中定义应用:
yaml
version: '3'
services:
  dotnet-app:
    build: .
    image: dotnet-app
docker-compose run dotnet-app

可以一键运行应用。