首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问码头容器外部的url

问如何访问码头容器外部的url
EN

Stack Overflow用户
提问于 2020-08-06 05:15:20
回答 1查看 4.5K关注 0票数 1

我有一个web前端和web应用程序,两者都有码头支持,这里是对接撰写文件。

代码语言:javascript
复制
version: '3.4'

services:
webfrontend:
image: ${DOCKER_REGISTRY-}webfrontend
build:
  context: .
  dockerfile: WebFrontEnd/Dockerfile

mywebapi:
image: ${DOCKER_REGISTRY-}mywebapi
build:
  context: .
  dockerfile: MyWebAPI/Dockerfile

由于两个应用程序共享相同的网络,所以内部DNS解析,我可以从前端应用程序访问web,如下所示,

代码语言:javascript
复制
 using (var client = new System.Net.Http.HttpClient())
        {
            // Call *mywebapi*, and display its response in the page
            var request = new System.Net.Http.HttpRequestMessage();
            request.RequestUri = new Uri("http://mywebapi/WeatherForecast");
            var response = await client.SendAsync(request);
            
        }

在这里,web http://mywebapi/WeatherForecast只能在代码中访问前端应用程序(内部),但是当我试图通过浏览器或邮递员浏览这个url时,它失败了。

  • 是什么原因?(浏览器还是邮递员,不是在集装箱网络中?)
  • ,我们怎样才能在容器之外访问它?我是否需要使用IP和端口,或者DNS也可以使用?
  • 我能在外面访问相同的http://mywebapi/WeatherForecast吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 07:28:21

这是什么原因?(不是集装箱网络中的浏览器还是邮递员?)

是的,DNS解析仅用于内部网络,因此mywebapi在由docker-组合定义的网络之外是未定义的。

我们怎样才能在容器之外访问它?我是否需要使用IP和端口,或者DNS也可以使用?

您必须将主机的端口与容器公开的端口(应用程序正在监听的端口)进行映射。在船坞里有一个章节--写得像

代码语言:javascript
复制
  ...
  ports:
    - "8000:8000"    # maps 8000 port of host to 8000 port inside container
  ...
  ...

一旦完成端口映射,您就可以通过use http://localhost:<port>/从外部码头网络访问服务。

我可以在外面访问同一个http://mywebapi/WeatherForecast吗?

否,是的,您可以在mywebapi文件( *NIX )中定义一个将localhost解析为/etc/hosts的映射。仅限)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63277258

复制
相关文章

相似问题

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