簡體   English   中英

如何從 docker 容器連接到本地 IIS 上的主機名?

[英]How to connect to a hostname on local IIS from docker container?

我有一個簡單的 python web 應用程序,如下所示,我試圖在 docker 容器中進行容器化並運行。 端點 '/' 和 '/es' 工作,因為它托管在本地主機上。

我在 IIS 中有一個網站,自定義主機名為www.devtenant1.local:777 ,它映射到我的主機主機文件中的 127.0.0.1。 如何從使用自定義主機名在主機上運行的 docker 容器訪問該網站?

下面的代碼

import json
from flask import Flask
import requests

app = Flask(__name__)


@app.route("/") *#this works*
def main():
    return "Welcome!"


@app.route("/es") *#this works*
def connect_to_es():
    result = requests.get("http://host.docker.internal:9200/")
    return result.json()


@app.route("/values") *#this doesn't work. What should be my URL in get() below*
def get_values():
    headers = {'content-type': 'application/json'}
    result = requests.get("https://www.devtenant1.local:777/api/values", headers=headers, verify=False)
    return result.json()

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

我嘗試使用docker rundocker build在容器內添加以下主機條目,但它不起作用 -

  • --add-host=www.devtenant1.local:172.17.0.1(網關)
  • --add-host=www.devtenant1.local:172.17.0.2(IP地址)
  • --add-host=www.devtenant1.local:0.0.0.0 (來自建議之一)
  • --add-host=www.devtenant1.local:10.1.10.160(來自其中一項建議)

請按照以下步驟操作。

1.使用ipconfig命令查找私有IP。 我的ip是 . . *

2.docker 容器在機器上運行

3.使用docker exec命令進入容器並在第一步嘗試ping IP。

4.所以你可以看到從容器內部可以訪問私有IP。 因為它在同一網絡中並且 docker 使用橋接網絡來創建容器。

5.我可以在容器 ip:80 中使用 curl 命令訪問我的 iis 主頁給出 200 響應。

6.在主機文件中添加條目我可以從docker內部使用FQDN ping。 因為現在私有 ip 被映射到www.devtenant1.local dns.now 我們能夠從 docker 容器內部使用 FQDN ping,它指向我在第一步中獲得的私有 ip。 Docker run / docker build --add-host=devtenant1.local:10.1.10.160 這將在 /etc/hosts 文件中添加條目,如下所述

127.0.0.1 localhost
10.1.10.60 devtenant.local

只是不要包含 https:// 或 www 部分。

7.此外,我使用相同的 fqdn www.devtenant1.local (默認端口 80)從我的本地獲得響應,在您的情況下是www.devtenant1.local:777

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM