我已经创建了一个小型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 .
1条答案
按热度按时间31moq8wy1#
我让这招起作用了!
将生成的Docker文件移动到解决方案文件夹,并将其从
Dockerfile
重命名为mywebsite.app.Dockerfile
。您还需要编辑
docker-compose.yaml
文件: