【发布时间】: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