.net - 如何将.net core web api部署到linux机器

标签 .net linux docker asp.net-core .net-core

我使用 .net core 创建了一个 web api 应用程序,我想使用 docker 部署到 linux。怎么做?

我在“命令”部分的 project.json 中添加这个 (--server.urls), 所以它变成了这样:

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://0.0.0.0:5000",
  },

这是我的dockerfile

FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr

COPY . /app

WORKDIR /app

RUN ["dnu", "restore"]

EXPOSE 5000/tcp

ENTRYPOINT ["dnx", "-p", "project.json", "web"]

我可以使用这个命令成功创建一个 docker 镜像 docker build -t myapp .

但是当我运行 docker 时

docker run -d -t -p 80:5000 myapp, 抛出错误

"Error response from daemon: driver failed programming external connectivity on endpoint kickass_hopper (16d5675978b188131670f391614f7f89b6ec977ae88924ae422a9a9c18768f22): iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.2:5000 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)."

有人知道发生了什么吗?

最佳答案

在我看来你的配置是正确的,虽然我会在创建 docker 镜像之前先编译 dot net core 应用程序,因为 dnu restore 可能是喜怒无常的。

这是我写的基于使用 Dot Net Core API 创建 Docker 容器的博客,这可能会有所帮助(尽管它基于 RC2):

http://fuzzyduckdev.blogspot.com/2016/07/aspnet-core-apis-with-docker.html

关于.net - 如何将.net core web api部署到linux机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37386685/

相关文章:

azure - 为 Nginx docker 容器启用 HTTPS

docker - Docker容器要使用相同的Nexus卷?

.net - host.json 中的 Azure Function 日志级别是否会覆盖 appsettings-file 日志级别和应用程序洞察日志级别?

c# - 如何在 .NET 中生成进程并捕获其 STDOUT?

c# - 在 C# 中重用事件处理程序的良好做法

linux - 每个 Unix 文件描述都有自己的读/写缓冲区吗?

linux - 带有 ssh 的 SFTP - 限制仅某些用户访问主目录

c++ - 在不带/proc/self/exe的Linux上的C/C++中,运行时可执行文件的大小?

c# - 我怎么 mock 这个?

docker - 使用Docker和Hyper-V重定向端口