如何从Docker容器连接到本地IIS上的主机名?

时间:2020-10-16 19:33:30

标签: python docker iis

我有一个简单的python网络应用程序,如下所示,我试图将其容器化在docker容器中并运行。端点“ /”和“ / es”在本地主机上工作。

我在IIS中有一个网站,其自定义主机名为www.devtenant1.local:777,该网站映射到我的主机hosts文件中的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(Gateway)
  • -add-host = www.devtenant1.local:172.17.0.2(IPAddress)
  • -add-host = www.devtenant1.local:0.0.0.0(来自建议之一)
  • -add-host = www.devtenant1.local:10.1.10.160(来自建议之一)

1 个答案:

答案 0 :(得分:0)

请按照以下步骤操作。

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

2.docker容器在机器上运行

3。使用docker exec命令进入容器并尝试在第一步中ping IP。

4。因此您可以看到从容器内部可以访问专用ip。因为它和docker在同一网络中,而docker使用网桥网络来创建容器。

5。我可以在容器ip:80内使用curl命令访问iis主页,给出200条响应。

6。在hosts文件中添加条目我能够从docker内部使用FQDN进行ping操作。 因为现在私有IP已映射到www.devtenant1.local dns。现在我们可以从docker容器内部使用FQDN进行ping操作,这指向第一步中获得的我的私有IP。 Docker运行/ 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