我有3个码头容器:
后端(Spring boot rest api)前端( apache镜像中的Js和html ) Mongodb
我通过docker-compose来编排它们,效果很好。
然而,我不知道如何让我的前端javascript客户端知道后端容器的主机/ip才能到达它。
这是我的docker-compose.yml:
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客户端应用中尝试过了:
export default {
REMOTE_HOST: 'http://project-server:8200'
}但它不起作用。(加载资源失败: net::ERR_NAME_NOT_RESOLVED)
我很确定这是因为JS在浏览器上本地运行,所以它没有办法解决这个问题。
这样做的正确方法是什么?有没有办法让前端服务(apache)将真实的主机传递/呈现给Javascript并以某种方式获得它?
非常感谢
发布于 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作为环境变量传递:
run --env <IP>=<value>然后,在node中,您可以直接读取该变量。希望能有所帮助
https://stackoverflow.com/questions/50855368
复制相似问题