![](/img/trans.png)
[英]Docker tcp can only use "localhost" but not "127.0.0.1" or ip to connect
[英]How to use a redirect 127.0.0.1 to docker machine IP
我正在為響應通配符子域的 web 應用程序設置docker-compose
環境。 在開發中,我們簡單地使用大lvh.me
域(解析為 127.0.0.1),它適用於所有子域,無需任何額外配置,例如:
我的問題是如何設置自定義域(比如說app.local
)及其所有子域以解析為docker-machine ip
。
注意:我不想使用etc/hosts
,因為它需要將每個子域單獨添加到文件中。
您可以通過 DNS 托管服務使用您的一個域(或購買一個便宜的域)。
If your docker machine's ip is dynamic, you'll need a hosting service that supports Dynamic DNS, or a regular DNS service with for an A record pointing to the static ip.
這實際上與 Docker 並不特別相關。
請注意,使用“.local”域后綴執行此操作將阻止您從公眾信任的機構獲取 TLS 證書,並導致您必須修改您的環境以必須信任本地證書頒發機構,然后頒發證書到您的 docker 機器的托管域。 如果您有 IT 部門,我強烈建議您與他們交談; 如果他們拒絕該請求,請與您的經理交談並讓他們推動。
基本步驟如下:
設置一個本地 DNS 服務器,您可以將解析器指向該服務器。
將其配置為將其自身無法回答的查詢轉發到您當前的 DNS 服務器。
設置一個包含一些記錄的“app.local”區域。 (在 SOA 記錄中,您的 email 地址應該用點而不是 @ 符號寫入,並帶有一個尾隨點。在此處寫入的所有完整 DNS 名稱都必須有一個尾隨點。此外,將“127.19.20.201”交換為無論您的碼頭機器 IP 是什么):
app.local. IN SOA 60 yourmachinename your.email.address. (
2019102100 ; serial number: YYYYMMDDss where ss is sequence
3600 ; refresh interval, not important here
1800 ; retry interval, not important here
3600 ; record expiration, not important here
60 ; minimum record time-to-live
)
app.local. IN A 60 172.19.20.201
*.app.local. IN A 60 172.19.20.201
如果您不僅需要在自己的機器上執行此操作,請咨詢您的 IT 部門。 他們有能力(盡管不一定願意,除非你的經理強迫他們進入)為所有使用 DNS 服務器的機器設置這個區域。 商業理由('我們需要它表現得像我們的主應用程序,但在不同的主機和域名上')勝過意識形態的正確性(盡管在 DNS RFC 中保留了 '.local' 作為 TLD),盡管它們不能勝過協議要求.
(如果你需要一個 TLS 證書來進行這個開發——你真的很可能這樣做。——你也應該和你的 IT 部門談談。他們可以通過驗證 DNS 區域的控制權從 LetsEncrypt 獲得免費的通配符證書,了解如何完成可能需要 15 到 30 分鍾。設置環境可能需要 15 分鍾到 6 小時,具體取決於使用的 DNS 提供程序。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.