c# - docker 容器内的 Console.ReadLine
问题描述
我有一个控制台应用程序的 docker 容器,它应该使用Console.Readline
命令从用户那里获取一个值,然后继续它的工作。但是,每当我在 myapplication 中使用Console.Readline
命令并尝试从中创建图像时,都会出现以下异常:
System.IO.IOException:“句柄无效。”
这是我的码头文件:
FROM mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-1903 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["DockerSample/DockerSample.csproj", "DockerSample/"]
RUN dotnet restore "DockerSample/DockerSample.csproj"
COPY . .
WORKDIR "/src/DockerSample"
RUN dotnet build "DockerSample.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "DockerSample.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerSample.dll"]
这是我在控制台应用程序中的代码:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var input=Console.ReadLine();
//do something with my input
}
}
解决方案
我试图重现您的异常,但我遇到了另一个问题
mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-1903
我用那个代替了
mcr.microsoft.com/dotnet/core/runtime:3.0
我的 Dockerfile 现在看起来像这样
FROM mcr.microsoft.com/dotnet/core/runtime:3.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /src
COPY ["ConsoleApp2/ConsoleApp2.csproj", "ConsoleApp2/"]
RUN dotnet restore "ConsoleApp2/ConsoleApp2.csproj"
COPY . .
WORKDIR "/src/ConsoleApp2"
RUN dotnet build "ConsoleApp2.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ConsoleApp2.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ConsoleApp2.dll"]
我在 ConsoleApp2 中的代码如下所示
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.WriteLine("Input:");
string input = Console.ReadLine();
Console.WriteLine("Output:");
Console.WriteLine(input);
}
}
我对 Docker 使用了以下命令,但没有遇到任何异常。该应用程序运行良好。
docker build -t consoleapp .
docker run -ti consoleapp
推荐阅读
- python - 如何将 scrapy.http.headers.Headers 类型转换为字符串类型
- angular - 没有像(Django)这样的后端的 Firebase+Angular 是否安全?
- heroku - 如何在heroku中使用秘密变量
- smtp - 从 GCP 作曲家气流发送电子邮件时出错
- c# - C# RestAPI 调用
- jit - DolphinDB JIT 不支持 while-loop 和 for-loop 中的 break 和 continue 吗?
- sql - 如何编写一个 oracle 单查询来从 2 个表中获取数据
- git - 无法在 gitlab-ci 中使用 .gitmodules 获取另一个 git repo
- r - 如何在 R 中绘制大图
- python - 冒泡排序在python中没有正确排序