【发布时间】:2019-12-08 12:44:35
【问题描述】:
我被要求创建一个带有 web api 和控制台程序的 .net 解决方案,然后使用包含完整环境的 docker-compose 命令提供此解决方案。 web api 使用的是 mongodb 和 easynetq。控制台程序引用了 web api 项目,也使用了 easynetq。我知道 Visual Studio 可以为每个项目提供一个 dockerfile。在此之后我该如何进行?我是否在解决方案级别将 2 个 dockerfile 合并为 1 个?或者我可以继续使用 2 个 dockerfile 吗?
控制台程序的Dockerfile
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
COPY . ./
RUN dotnet restore "./ConsoleProgram.csproj"
RUN dotnet publish "ConsoleProgram.csproj" -c Release -o out
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "ConsoleProgram.dll"]
webapi 的 Dockerfile 与上面相同,只是名称有所改变
解决方案级别的 Docker 组合
version: '3'
services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
webapi:
build: ./webapi
restart: always
ports:
- 5000:80
environment:
MongoDB__Host: mongo
depends_on:
- mongo
console:
build: ./console
restart: always
depends_on:
- webapi
在对此进行 docker compose 后,我收到以下错误:
跳过项目“C:\WebApi\WebApi.csproj”,因为找不到它。 引用的项目 '..\WebApi\WebApi.csproj' 不存在。 服务“控制台”构建失败:命令“cmd /S /C dotnet” publish "Console.csproj" -c Release -o out' 返回一个非零代码: 1
【问题讨论】:
标签: docker asp.net-core asp.net-web-api docker-compose dockerfile