【发布时间】:2021-12-03 16:24:28
【问题描述】:
我从模板创建了一个 .net5 C# 控制台应用程序。然后通过 Add -> 容器编排支持 -> docker-compose 添加 docker-compose。
生成的 Dockerfile
FROM mcr.microsoft.com/dotnet/runtime:5.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["ConsoleApp1/ConsoleApp1.csproj", "ConsoleApp1/"]
RUN dotnet restore "ConsoleApp1/ConsoleApp1.csproj"
COPY . .
WORKDIR "/src/ConsoleApp1"
RUN dotnet build "ConsoleApp1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ConsoleApp1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ConsoleApp1.dll"]
生成的 docker-compose
version: '3.4'
services:
consoleapp1:
image: ${DOCKER_REGISTRY-}consoleapp1
build:
context: .
dockerfile: ConsoleApp1/Dockerfile
当我尝试运行此示例时,我收到一条消息“services.consoleapp1 must be a mapping”。
有没有办法可以在 docker-compose 中运行控制台应用程序?
【问题讨论】:
-
你能检查
docker-compose.yaml的缩进吗?可能是这个问题:stackoverflow.com/a/43460549/1974021 -
我查过了。 consoleapp1 行上有 2 个空格,图像和构建行上有 4 个空格,上下文和 dockerfile 行上有 6 个空格。看起来还可以。
-
嗯,奇怪。我尝试创建一个简单的控制台应用程序,而不是使用生成的。粘贴你的,它的工作正常。我已经在 Windows 容器中尝试过
-
这个问题真的很奇怪。没想到另一个文件中有问题。也许问题出在我的 VS 中。
标签: c# docker docker-compose yaml .net-5