如何将 Docker 容器中的外部 link 重定向到本地服务
How to redirect external link in a Docker container to local service
我的 Docker 旅程还处于早期阶段,我正在尝试 'Dockerise' 一个现有的 UI/API/DB 网络应用程序,其中 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 旅程还处于早期阶段,我正在尝试 'Dockerise' 一个现有的 UI/API/DB 网络应用程序,其中 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
页面。