我的 Docker 之旅还处于早期阶段,我正在尝试“Dockerise”现有的 UI/API/DB Web 应用程序,其中 UI 和 API/DB 位于两个不同的服务器上。到目前为止,一切进展顺利,我的 docker-compose 启动了 UI、API 和 DB(以及 phpMyAdmin)的服务,一切都很好。我知道由于 Docker 的默认网络方法,这些服务可以使用服务名称作为主机名进行固有的通信。
UI(Angular 代码库)对 https://api.myproject.com 进行各种调用它在实时站点中工作正常,但在我的 Docker 版本中并不理想,因为我希望它到达容器中的 API 服务而不是 API 实时站点。
我知道我可以编辑 UI 容器上的代码并将调用替换为 https://api.myproject.com调用“api”,但如果我想将来在不同的服务器上重新部署(就像现在一样),这会很不方便并且缺乏可移植性。
容器是否可以将 URL 的所有 POST/GET 等重定向到容器服务?我认为 --add-host
可能会执行类似的操作,但它似乎需要 IP 地址而不是服务名称。
提前致谢。
编辑[澄清] 我的问题在于用户在浏览器中看到的 UI 页面 (HTML/JS)。当页面加载时,它会向 API URL 抛出一些 GET 请求,这就是我希望重定向到容器 API 服务的请求。
最佳答案
您可以为给定容器使用网络别名,并且这些别名可以覆盖现有的 FQDN。
这是一个 200 万精心制作的示例:
docker-compose.yml
---
services:
search_engine:
image: nginx:latest
networks:
default:
aliases:
- google.com
- www.google.com
client:
image: alpine:latest
command: tail -f /dev/null
您可以通过以下方式启动此项目:
docker-compose up -d
然后使用以下命令登录客户端容器
docker-compose exec client sh
并尝试通过以下任一方式访问您的 search_engine
服务
wget http://search_engine
wget http://google.com
wget http://www.google.com
在所有情况下,您都会获得全新安装的 nginx 服务器的默认 index.html
页面。
关于docker - 如何将Docker容器中的外部链接重定向到本地服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71980338/