首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果使用除默认端口80以外的任何其他端口,则无法在Docker上运行应用程序

如果使用除默认端口80以外的任何其他端口,则无法在Docker上运行应用程序
EN

Stack Overflow用户
提问于 2019-06-18 20:08:37
回答 3查看 577关注 0票数 0

我有一个演示应用程序,这是在码头托管。Docker的公开端口是80,应用程序在本地机器上运行良好,我可以在localhost:8888上看到我的应用程序的登录页。

Docker文件如下所示

代码语言:javascript
复制
FROM microsoft/aspnetcore:2.0
COPY dist /app
WORKDIR /app
EXPOSE 80/tcp
ENTRYPOINT ["dotnet", "demoapp.dll"]

每当我将"EXPOSE 80/tcp“行改为"EXPOSE 8080/tcp”,“expose5000/tcp”等,以暴露Docker容器的任何其他端口,如许多在线可用示例代码中给出的80,我无法在浏览器上运行我的应用程序。除80以外的任何端口都不工作。

我能够创建图像和创建容器的应用程序也。一切正常,但当我尝试在浏览器上运行应用程序时(localhost:8080/5000/9000等)应用程序登录页面未加载。

有什么建议吗?我是否需要进行一些与端口相关的配置,或者联系我的网络团队?或者我这里遗漏的任何代码?

EN

回答 3

Stack Overflow用户

发布于 2019-06-18 20:14:06

您应该能够公开容器内的任何端口。但是,您可以在容器启动期间在主机上发布公开的端口。这是通过docker run命令的-p标志完成的。

当您说您能够使用localhost:8888访问应用程序时,这意味着您已经使用-p 8888:80运行了docker run命令。这会将容器端口80作为端口8888发布到主机上。要使用任何其他端口,只需将docker run命令更改为-p 8888:<new exposed port>,这样就可以了。

有关更多信息,请参阅docker run命令帮助:https://docs.docker.com/v17.12/edge/engine/reference/commandline/run/#publish-or-expose-port--p-expose

发布或公开端口(-p、-expose)

$ docker运行-p 127.0.0.1:80:8080 ubuntu bash

这会将容器的8080端口绑定到宿主机的127.0.0.1上的80端口。用户指南详细解释了如何在Docker中操作端口

票数 0
EN

Stack Overflow用户

发布于 2019-06-18 20:14:56

如果您的应用程序在端口运行,假设是8080,那么请确保在运行容器时进行端口映射。

docker run -itd -p 8080:8080 <image>

这会将主机的端口8080映射到容器内的端口8080上。(-p主机端口:容器端口)

如果你不想要端口映射,那么在host模式下运行docker容器。

docker run -itd --net=host <image>

在这种情况下,您容器使用主机网络,因此您的应用程序在其中运行的任何端口都应该公开。

票数 0
EN

Stack Overflow用户

发布于 2019-06-20 13:44:04

对于microsoft/aspnetcore,它将ASPNETCORE_URLS环境变量设置为http://+:80,这意味着如果您没有在应用程序中显式设置URL,例如通过Program.cs中的app.UseUrl,那么您的应用程序将侦听容器内的端口80。

参考:microsoft/aspnetcore

如果您想更改默认的80端口,您需要在Program.cs中使用UseUrls,如下所示,并在dockerfile中使用EXPOSE 8080/tcp

代码语言:javascript
复制
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseUrls("http://+:8080")
        .UseStartup<Startup>();

或者,您需要像这样更改ASPNETCORE_URLS环境

代码语言:javascript
复制
FROM microsoft/aspnetcore:2.0
COPY dist /app
WORKDIR /app
EXPOSE 8080/tcp
ENV ASPNETCORE_URLS=http://+:8080
ENTRYPOINT ["dotnet", "demoapp.dll"]

要运行的命令

代码语言:javascript
复制
docker run -it -p 8080:8080 mytest
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56648811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档