【问题标题】:Build Docker image for .net core project through command通过命令为 .net core 项目构建 Docker 镜像
【发布时间】:2019-05-04 21:13:03
【问题描述】:

我想为我的 .net 核心项目创建 docker 镜像。我已经使用 docker enable 功能创建了 .net 核心项目。如果我从 VS 运行项目,它会自动为我创建 docker 映像。但我想通过 docker 命令创建映像(我不想在我的机器上创建/运行容器,只想从源代码创建 docker 映像)。我正在使用 docker for windows。

有什么帮助吗?

【问题讨论】:

  • 你总是可以为dotnet new 创建一个模板,它允许你存根一个基本的 dockerfile。也许像dotnet new dockerfile 这样的东西可以工作,但你需要创建它。我过去写过关于创建自定义模板的文章,这可能是一个有用的起点:dotnetcore.gaprogman.com/2017/10/05/creating-a-custom-template
  • @JamieTaylor 感谢您的关注,但我说的是 docker 图像而不是 docker 文件或模板。如上所述,我已经在我的项目中配置了 docker。

标签: docker .net-core dockerfile continuous-deployment


【解决方案1】:

您可以通过以下方式从 .net 核心项目构建 docker 映像:

  1. 在您的项目中,您有一个 docker 文件,其中包含以下信息:(如果没有,则创建)。

    FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    FROM microsoft/dotnet:2.2-sdk AS build
    WORKDIR /src
    COPY TestProject.API/TestProject.API.csproj TestProject.API/
    RUN dotnet restore TestProject.API/TestProject.API.csproj        
    COPY . .        
    WORKDIR /src/TestProject.API        
    RUN dotnet build TestProject.API.csproj -c Release -o /app
    
    FROM build as unittest        
    WORKDIR /src/TestProject.UnitTest
    
    FROM build AS publish        
    RUN dotnet publish TestProject.API.csproj -c Release -o /app
    
    FROM base AS final        
    WORKDIR /app        
    COPY --from=publish /app .        
    ENTRYPOINT ["dotnet", "TestProject.API.dll"]
    
  2. 在解决方案中构建项目或通过在命令提示符中打开相同的命令使用命令,然后使用命令:

    E:\TestProject\TestProject.API>docker build.

它将创建图像。您可以通过命令检查相同的内容:

E:\TestProject\TestProject.API>docker images

【讨论】:

  • 您好,能否请您在 docker 文件中使用文本而不是图像?即在编辑器中使用 {} 图标。
  • 我将详细信息更新为 docker 文件的文本。谢谢
【解决方案2】:

您需要创建一个Dockerfile 并将其签入您的源存储库(如果您还没有)。这告诉 docker 如何创建镜像。

从包含 Dockerfile 的目录中运行 docker build 将为您构建映像。

然后您可以执行 docker push 将该映像推送到 docker 存储库,或执行 docker run 以使用该新映像创建一个容器。

您可能还想熟悉docker images 以列出您计算机上的图像,并熟悉docker rmi 以删除旧图像。它们在开发过程中快速建立,因此有助于在此之上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2023-03-10
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多