我有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并以某种方式获取它?
非常感谢
答案 0 :(得分:1)
project-server
只能在docker-compose
创建的网络中解析。如您所述,要从外部世界进行连接,您需要导出主机的IP而不是project-server
。问题是来宾容器不知道来宾的IP。以下是对此的详细讨论:How to get the IP address of the docker host from inside a docker container
在您的情况下,您可能需要运行容器,将主机的IP作为环境变量传递:
run --env <IP>=<value>
然后在节点中你可以读取该变量。 希望它有所帮助