【问题标题】:ASP.NET Core Dockerfile default template: "COPY *.sln ./" No source files were specifiedASP.NET Core Dockerfile 默认模板:“COPY *.sln ./”未指定源文件
【发布时间】:2018-02-27 20:39:16
【问题描述】:

我使用 Visual Studio 默认模板创建了一个标准的 ASP.NET 核心 Web 应用程序,并添加了 Docker 支持。这将创建以下文件/文件夹结构

+ Test01
    +Test01
        -All project files
        -Dockerfile
    -Test01.sln
    -docker-compose.xxx files
    -.dockerignore

VS创建的Dockerfile如下:

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY Test01/Test01.csproj Test01/
RUN dotnet restore
COPY . .
WORKDIR /src/Test01
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Test01.dll"]

现在,当我使用 Docker CLI 根据 项目文件夹 中的 Dockerfile 构建映像时:

cd -to project folder-
docker build -t test01 . 

我收到以下错误:

Step 6/17 : COPY *.sln ./
No source files were specified

很明显,这是因为 Dockerfile 位于项目文件夹 (/Test01/Test01) 中,而 .sln 文件位于父文件夹 (/Test01) 中。

我不明白为什么默认的 Dockerfile 是这样设置的?为什么 Dockerfile 不在解决方案文件夹中,而不是在项目文件夹中?如果以这种方式从 CLI 构建,不仅 .sln 文件无法访问,而且 .dockerignore 和 docker-compose 文件也在父文件夹中?

我错过了什么?

【问题讨论】:

  • 你能把 docker-compose.yml 也包括进来吗?

标签: visual-studio docker asp.net-core dockerfile


【解决方案1】:

您应该在解决方案文件夹中运行docker-compose build,而不是在项目文件夹中运行docker build。但是,这需要安装 docker-compose

编辑:你可以用 docker compose 做很多很酷的事情。例如,您可以在 docker-compose.yml 中包含所有容器/信息并运行 docker-compose up -d。这将为您构建图像,下载任何 repo 图像,部署容器,并将它们置于分离模式! (reference)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多