我使用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不在Solution文件夹而不是项目文件夹中?如果以这种方式从CLI构建,不仅.sln文件不可访问,而且.dockerignore和docker-compose文件也在父文件夹中?
我错过了什么?
答案 0 :(得分:3)
您应该在解决方案文件夹中运行docker build
,而不是在项目文件夹中运行docker-compose build
。但这需要安装docker-compose。
编辑:您可以使用docker撰写很多很酷的东西。例如,您可以在docker-compose.yml中包含所有容器/信息并运行docker-compose up -d
。这将构建您的图像,下载任何repo图像,部署容器,并将它们置于分离模式! (reference)