docker - 如何将Docker容器中的外部链接重定向到本地服务

标签 docker redirect docker-compose

我的 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/

相关文章:

docker - 熟练使用elasticsearch unreachable_exception

cakephp - 如何将目标参数传递给 CakePHP 重定向?

Docker 无法解决 : executor failed running. 退出代码:1

Docker:将现有的遗留系统转换为 Dockerized 形式,同时保持原始网络方案

postgresql - postgresql 中的 cron :alpine docker container

Docker Run 命令挂起,没有任何错误

python - 如何减小 python 应用程序的多阶段 docker 构建的大小

php - .htaccess 301 重定向添加一个额外的斜杠

.htaccess - 通过 .htaccess 重定向的 URL 被重定向到不同的位置

mongodb - 如何将 Eclipse 同上连接到 mongodb 云