首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Docker容器在前后台之间进行REST调用

如何使用Docker容器在前后台之间进行REST调用
EN

Stack Overflow用户
提问于 2018-06-14 18:31:49
回答 1查看 1.2K关注 0票数 2

我有3个码头容器:

后端(Spring boot rest api)前端( apache镜像中的Js和html ) Mongodb

我通过docker-compose来编排它们,效果很好。

然而,我不知道如何让我的前端javascript客户端知道后端容器的主机/ip才能到达它。

这是我的docker-compose.yml:

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

services:
  project-server:
    build: .
    restart: always
    container_name: project-server
    ports:
      - 8200:8200
    working_dir: /opt/app
    depends_on:
      - mongo

  httpd:
    image: project-ui
    container_name: project-ui
    ports:
      - 8201:80


  mongo:
    image: project-mongo
    container_name: project-mongo
    ports:
      - 27018:27017
    volumes:
      - $HOME/data/mongo-data:/data/db
      - $HOME/data/mongo-bkp:/data/bkp
    restart: always

所以我已经在我的js客户端应用中尝试过了:

代码语言:javascript
复制
export default {
  REMOTE_HOST: 'http://project-server:8200'
}

但它不起作用。(加载资源失败: net::ERR_NAME_NOT_RESOLVED)

我很确定这是因为JS在浏览器上本地运行,所以它没有办法解决这个问题。

这样做的正确方法是什么?有没有办法让前端服务(apache)将真实的主机传递/呈现给Javascript并以某种方式获得它?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 20:30:14

只能在docker-compose创建的网络中解析project-server。正如您所提到的,要从外部世界连接,您需要导出主机的IP,而不是project-server。问题是来宾容器不知道来宾的IP。下面是关于这方面的详细讨论:How to get the IP address of the docker host from inside a docker container

在您的情况下,您可能需要运行容器,将主机的IP作为环境变量传递:

代码语言:javascript
复制
run --env <IP>=<value>

然后,在node中,您可以直接读取该变量。希望能有所帮助

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

https://stackoverflow.com/questions/50855368

复制
相关文章

相似问题

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