gpt4 book ai didi

visual-studio - ASP.NET Core Dockerfile 默认模板 : "COPY *.sln ./" No source files were specified

转载 作者:行者123 更新时间:2023-12-02 18:53:47 25 4
gpt4 key购买 nike

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

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

Dockerfile由VS创建如下:
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 build在项目文件夹中,您应该运行 docker-compose build在解决方案文件夹中。这要求 docker-compose安装,但是。

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

关于visual-studio - ASP.NET Core Dockerfile 默认模板 : "COPY *.sln ./" No source files were specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49017551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com