docker-compose错误:无法找到指定的Dockerfile

时间:2019-02-12 13:20:17

标签: docker docker-compose dockerfile

我有一个要部署生产环境的.Net Core项目,但是当我尝试在自己的Droplet上构建它时,出现此错误“ 错误:找不到指定的Dockerfile ”。我无法弄清楚我的配置出了什么问题。

项目结构

.js

Dockerfile

npm

docker-compose.yml

project
│   project.sln
│   docker-compose.dcproj  
│   docker-compose.dev.yml
│   docker-compose.prod.yml 
│   docker-compose.yml
│
└───project.Web
│   │   (mvc-files)
│   │   .dockerignore
│   │   Dockerfile
│   │   project.Web.csproj
│   │
│   
└───project.Models
│
└───project.Services
│
└───project.Core

我在不同的环境中执行这些代码

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY project.Web/project.Web.csproj project.Web/
COPY project.Models/project.Models.csproj project.Models/
COPY project.Services/project.Services.csproj project.Services/
COPY project.Core/project.Core.csproj project.Core/
RUN dotnet restore project.Web/project.Web.csproj
COPY . .

WORKDIR /src/project.Web
RUN dotnet build project.Web.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish project.Web.csproj -c Release -o /app

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

此docker-compose在本地环境下可用,但不适用于prod,找不到Dockerfile。 我已经检查了.dockerignore是否包含Dockerfile,但我没有。 我尝试用这些配置执行,但还是没有运气

version: '3.7'

services:
  webapp:
    build:
      context: .
      dockerfile: project.Web/Dockerfile

编辑: 我不认为dev或prod docker-compose文件是问题,但还是要添加。

docker-compose.dev.yml

docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build

docker-compose.prod.yml

 - context: .
   dockerfile: project.Web/Dockerfile

 - context: .
   dockerfile: Dockerfile

 - context: app/
   dockerfile: Dockerfile

 - context: app/project.Web/
   dockerfile: Dockerfile

1 个答案:

答案 0 :(得分:0)

假设您已经将alicoskun/project:latest图像推送到生产液滴可以找到的存储库中,则无需在docker-compose.yml命令中包含docker-compose文件。相反,只需运行:

docker-compose -f docker-compose.prod.yml up -d --build

docker-compose.yml命令行中包含docker-compose将要求Dockerfile存在,即使它不会被用于构建系统。