【问题标题】:Build multi project net core image using Dockerfile使用 Dockerfile 构建多项目网络核心镜像
【发布时间】:2018-01-24 14:08:56
【问题描述】:

我正在使用参考:https://docs.docker.com/engine/examples/dotnetcore/#prerequisites 创建以下Dockerfile

FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

但是我有以下解决方案结构:

.sln
Dockerfile
------------WebAPP
------------WebAPP.Domain

然后我修改了Dockerfile,以便我可以定位我的 WebAPP csproj 等。

FROM microsoft/aspnetcore-build AS builder
WORKDIR /app
# copy csproj and restore as distinct layers
COPY ./WebAPP/*.csproj ./
RUN dotnet restore
# copy everything else and build
COPY ./WebAPP ./
RUN dotnet publish -c Release -o out

# build runtime image
FROM microsoft/aspnetcore
WORKDIR /app
COPY --from=builder /app/out ./
ENV ASPNETCORE_ENVIRONMENT Production
ENTRYPOINT ["dotnet", "WebAPP.dll"]

但是它在dotnet publish 步骤上失败了,因为它缺少有意义的域项目。我还添加了RUN dotnet build 步骤,以确保我拥有所有依赖项和 dll,但我在倒数第二步确实失败了:

Step 10/12 : COPY --from=builder /app/out ./
COPY failed: stat /var/lib/docker/aufs/mnt/9b7dda771a5bf433365f513a2bfe4cfae4199402b35c95d5f81c57367cdbb788/app/out: no such file or directory

这里有什么我遗漏的吗?

【问题讨论】:

  • 您是否发现文件夹 /app/out 存在于 builder 阶段?
  • 它确实存在,因为同一个文件适用于单个项目解决方案。它也基于官方文档的 dockerfile - 所以除非他们的示例中有错误,否则它应该存在并且可以工作
  • 我不是 .net 专家,但我认为命令 dotnet publish -c Release -o out 必须在工作目录(应用程序)的 out 文件夹中生成输出。可能是这个命令没有生成任何东西。为了正确分析错误来源,您能否在构建阶段添加此RUN mkdir out

标签: asp.net-core .net-core dockerfile


【解决方案1】:

如果您的 WebApp 引用了 WebApp.Domain,则可以简化 DockerFile

FROM microsoft/aspnetcore:2.0
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApp.dll"]

【讨论】:

    猜你喜欢
    • 2018-08-14
    • 2018-09-18
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多