Docker 运行 .net core 控制台程序
Dockerfile
生成Dockerfile
- 点击项目 => 右键 => 添加 => docker支持
- docker文件选项=> 选择 Linux
- 所在项目路径下面会出现一个 Dockerfile 文件
- 将代码拷贝至服务器
build 镜像
docker build -t ImageName .
运行镜像
docker run --name -d ImageName
问题
问题1:关于dockerfile中路径问题
- 因为 build 时以Dockerfile所在的位置为准,所以路径均不存在上级路径。
问题2:运行镜像后程序自动退出
- 使用Console.ReadKey() 会输出报错信息,而Read or ReadLine虽然可以让程式不报错,但是无法起到阻塞的效果。
- 解决办法 在程序结束位置添加如下代码
private static readonly AutoResetEvent _closingEvent = new AutoResetEvent(false);
Console.CancelKeyPress += ((s, a) =>
{
Console.WriteLine("程序已退出!");
_closingEvent.Set();
});
_closingEvent.WaitOne();