asp.net 网站 api 在 docker 停止
asp.net web api on docker stops
我有一个基本的网络 api(owin 自我托管)应用程序,它 运行 在我的本地 docker 工具箱 (windows) 中很好用。
但是当我用 docker cloud 启动它时,它会启动,但在 5 或 6 秒后停止。我不知道该怎么办。我正在使用 mono:latest 图像和我的云托管环境。是digitalocean.
这是代码
Program.cs:
string address = "http://+:5000";
using (WebApp.Start<Startup>(address))
{
Console.WriteLine("web api listening on port 5000");
Console.Read();
}
就是这个。
Startup.cs
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
app.UseWebApi(config);
Docker 文件:
from mono:latest
run mkdir app
copy ./GAC/bin/Debug /app
workdir /app
expose 5000
entrypoint ["mono"]
cmd ["GAC.exe"] // gac is the console app name.
就是这样。我通过输入 docker run -it -p 80:5000 myContainer
运行 我的容器。
而且它 运行 没有停止问题。我在 windows 中构建了我的容器,所以我可能面临一些基于 unix 的问题。
你怎么看?有什么遗漏点吗?
你好,我想你也有一个 API 控制器?
另外,您要向 docker 云推送什么?我假设它是一个图像而不是一个容器?谢谢。
我找到了答案。我不知道为什么,但问题是代码根本不等待。
以上代码有效。
string address = "http://+:5000";
using (WebApp.Start<Startup>(address))
{
Console.WriteLine("web api listening on port 5000");
while(true){}
}
我有一个基本的网络 api(owin 自我托管)应用程序,它 运行 在我的本地 docker 工具箱 (windows) 中很好用。
但是当我用 docker cloud 启动它时,它会启动,但在 5 或 6 秒后停止。我不知道该怎么办。我正在使用 mono:latest 图像和我的云托管环境。是digitalocean.
这是代码
Program.cs:
string address = "http://+:5000";
using (WebApp.Start<Startup>(address))
{
Console.WriteLine("web api listening on port 5000");
Console.Read();
}
就是这个。
Startup.cs
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
app.UseWebApi(config);
Docker 文件:
from mono:latest
run mkdir app
copy ./GAC/bin/Debug /app
workdir /app
expose 5000
entrypoint ["mono"]
cmd ["GAC.exe"] // gac is the console app name.
就是这样。我通过输入 docker run -it -p 80:5000 myContainer
运行 我的容器。
而且它 运行 没有停止问题。我在 windows 中构建了我的容器,所以我可能面临一些基于 unix 的问题。
你怎么看?有什么遗漏点吗?
你好,我想你也有一个 API 控制器? 另外,您要向 docker 云推送什么?我假设它是一个图像而不是一个容器?谢谢。
我找到了答案。我不知道为什么,但问题是代码根本不等待。
以上代码有效。
string address = "http://+:5000";
using (WebApp.Start<Startup>(address))
{
Console.WriteLine("web api listening on port 5000");
while(true){}
}