![](/img/trans.png)
[英]How to connect Flask app docker container to local mongoDB (not docker container)
[英]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 run
或docker build
在容器內添加以下主機條目,但它不起作用 -
請按照以下步驟操作。
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.