我让我的应用程序在docker-compose中工作,然后使用kompose对其进行了转换。但是,当我想从后端获取数据时遇到问题。由于网址,我无法再使用以前的方法。
@app.route("/")
def home():
url = "http://backend:5000/"
try:
res = requests.get(url)
except Exception:
return "Error with {}".format(url)
dictFromServer = res.json()
return dictFromServer['message']
使网址正常工作的最佳方法是什么?
答案 0 :(得分:1)
完成的传统方法是使用注入到容器运行时中的环境变量。可以使用合理的默认值,这样本地开发可以像以前一样继续进行:
import os
def home():
be_host = os.getenv('BACKEND_SERVICE_HOST', 'backend')
be_port = os.getenv('BACKEND_SERVICE_PORT', '5000')
url = 'http://{}:{}'.format(be_host, be_port)
这些环境变量及其值基于正在运行的Pod当前名称空间中Service
对象的名称为injected by kubelet。在上面的示例中,这意味着Service
被命名为backend
,并且该服务在5000上暴露了ports:
(指向Pod本身暴露的containerPorts:
。 / p>
如果对您的团队来说这太神奇了,您当然可以声明自己的环境变量。