无法生成具有项目依赖关系的项目

bfrts1fy  于 2022-10-23  发布在  Docker
关注(0)|答案(1)|浏览(161)

我已经创建了一个小型Web应用程序,该应用程序依赖于我的Visual Studio解决方案中的另一个共享项目。在本地,一切都正常工作;构建和运行都是在调试基础上进行的。这个小的Web应用程序使用的是MongoDB,我正在尝试将我的项目合并到docker-compose文件中,因为当我的Web应用程序启动并运行时,我想将解决方案附加到其他项目中。
当运行docker-compose文件时,它似乎无法解析依赖项目(共享)的WebApp本身。Dockerfile是使用Visual Studio创建的,并在设置了所有项目依赖项之后创建。
我认为问题在于docker-compose.yaml文件在解决方案文件夹中(如果它应该在解决方案文件夹中),而Dockerfile在子文件夹中。WebApp只是第一步。我的下一步将是创建一个新项目,使某些代码每x分钟运行一次。这将是解决方案中的另一个项目,它有自己的Dockerfile,并在docker-compose.yaml文件中进行配置。
我的项目结构:

mywebsite
|
|-docker-compose.yaml
|
|-mywebsite.app
| |- Dockerfile
| |- mywebsite.app.csproj (ASP.NET web app)
|
|-mywebsite.shared
  |- mywebsite.shared.csproj (classlib)

我正在尝试从MyWebsite目录运行docker-compose -d --build
我的码头-组成:

version: '2'

networks:
  appnetwork:
    driver: bridge

services:

  mongodb:
    image: mongo:latest
    container_name: mongo
    ports:
      - 27018:27017
    volumes:
      - mongodb:/data/db
    networks:
      - appnetwork

  app:
    build: ./mywebsite.app/
    container_name: app

volumes:
  mongodb:

我的应用程序生成的Dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["mywebsite.app/mywebsite.app.csproj", "mywebsite.app/"]
COPY ["mywebsite.shared/mywebsite.shared.csproj", "mywebsite.shared/"]
RUN dotnet restore "mywebsite.app/mywebsite.app.csproj"
COPY . .
WORKDIR "/src/mywebsite.app"
RUN dotnet build "mywebsite.app.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "mywebsite.app.csproj" -c Release -o /app/publish

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

通过docker-compose运行此命令会导致错误:

=> ERROR [build 3/8] COPY [mywebsite.app/mywebsite.app.csproj, mywebsite.app/]                                                  0.0s 
 => ERROR [build 4/8] COPY [mywebsite.shared/mywebsite.shared.csproj, mywebsite.shared/]                                                     0.0s 
------
 > [build 3/8] COPY [mywebsite.app/mywebsite.app.csproj, mywebsite.app/]:
------
------
 > [build 4/8] COPY [mywebsite.shared/mywebsite.shared.csproj, mywebsite.shared/]:
------
failed to solve: failed to compute cache key: "/mywebsite.app/mywebsite.app.csproj" not found: not found

我要补充的是,从解决方案文件夹运行Dockerfile运行得很好,但不能运行项目文件夹本身。那么,码头作文搞砸了是什么?
docker build -t mywebsite.app -f mywebsite.app/Dockerfile .

31moq8wy

31moq8wy1#

我让这招起作用了!
将生成的Docker文件移动到解决方案文件夹,并将其从Dockerfile重命名为mywebsite.app.Dockerfile
您还需要编辑docker-compose.yaml文件:

app:
    build:
      context: ./
      dockerfile: mywebsite.app.Dockerfile
    container_name: app

相关问题