我有一个要部署生产环境的.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
答案 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
存在,即使它不会被用于构建系统。