gpt4 book ai didi

apache - 如何使用Docker容器在前端和后端之间进行REST调用

转载 作者:行者123 更新时间:2023-12-02 18:29:49 25 4
gpt4 key购买 nike

我有3个Docker容器:

后端(Spring Boot Rest API)
前端(apache图像中的js和html)
Mongodb

我正在通过docker-compose对其进行编排,并且效果很好。

但是我不知道如何让我的前端javascript客户端知道后端容器的host / 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,并以某种方式获得它?

非常感谢

最佳答案

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

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

run --env <IP>=<value>

然后在node中,您可以只读取该变量。
希望能帮助到你

关于apache - 如何使用Docker容器在前端和后端之间进行REST调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50855368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com