我的 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 服務的內容。
uj5u.com熱心網友回復:
您可以為給定的容器使用網路別名,這些別名可以覆寫現有的 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
index.html在所有情況下,您都將獲得全新安裝的 nginx 服務器的默認頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463063.html
