docker - 将前端烧瓶容器连接到后端烧瓶容器
问题描述
我是 docker 新手,我正在尝试使用 docker-compose.yml 文件将 2 个烧瓶容器连接在一起:
码头工人-compose.yml
version: "3.7"
services:
frontend:
build:
context: ./frontEnd
container_name: frontend
depends_on: [backend]
ports:
- "5000:1973"
networks:
- my_own_network
links:
- "backend:backend"
backend:
build:
context: ./backEnd
container_name: backend
ports:
- "5001:5000"
networks:
- my_own_network
networks:
my_own_network:
后端.py
from flask import Flask, jsonify, request
my_app = Flask(__name__)
@my_app.route('/generateKeys',methods = ['POST'])
def generateKeys() :
values = request.get_json()
if (values['fullname']=="NAAAME" and values['pass']=="PASS"):
return 'new_key : HERES_YOUR_KEY' , 201
else :
return '_error : Invalid submitted informations' , 300
if __name__ == '__main__' :
my_app.run(host='0.0.0.0')
前端.py
from flask import Flask, jsonify, render_template , request
import requests , json , ast
BackENDnode = 'http://backend:5000'
FE_app = Flask(__name__ , template_folder = 'templates')
@FE_app.route('/SubmitCitizenInfo', methods=['POST'])
def submit_citizen_informations():
citizen_object = {
'fullname' : str(request.form["citizen_name"]),
'pass' : str(request.form["citizen_pass"]),
}
keys_url = "{}/generateKeys".format(BackENDnode)
keys_request = requests.post( keys_url,
json = citizen_object,
headers={'Content-type' : 'application/json'})
if not keys_request.status_code == 300 || not keys_request.status_code == 201 :
err = '_error : Something went wrong somehow '+str(keys_url)
return render_template('/Public/error.html', err = err )
if __name__ == '__main__' :
FE_app.run(host = '0.0.0.0', debug=True ,port=1973)
Error.html_displaying
_error : 出了点问题 http://backend:5000/generateKeys
码头工人撰写--版本
docker-compose 版本 1.26.0,构建 d4451659
我的目录树:
- docker-compose.yml - backEnd |- Dockefile |- backend.py |- BErequirements.txt - frontEnd : |- Dockerfile |- frontend.py |- FErequirements.txt |- templates |- error.html |- signUp.html |- displayingKeys.html |- Static |- JS |- IMGS |- CSS
解决方案
如果您使用相同的 compose-file,docker-compose 将从它们创建一个默认网络,删除网络定义,它们应该可以使用http://backend:5000
url 访问。
Baiscally 当您调用时docker-compose up
,您会看到说为 compose 文件中的所有服务创建默认网络,您可以使用docker network ls
.
要从默认网络访问服务,您可以使用http//:<service_name>:<port>
, where services for you arebackend
和frontend
.
当您想要桥接到不共享公共网络的容器时,使用网络定义。
http://localhost:5000
删除网络定义后,您还可以使用它来访问后端节点。
推荐阅读
- genetic-algorithm - 整洁:物种形成
- django - 使用基于 Django 类的 CreateView 执行多步骤表单
- css - Bootstrap 4 添加垂直分隔管
- microsoft-graph-api - 如何摆脱 Microsoft Access Data Anytime Consent?
- android - 嵌套协调器布局内的 AppbarLayout
- node.js - 一旦在节点 js 中打开 Solr 连接,我们如何关闭它
- ios - 在文本字段中更新输出作为用户类型
- javascript - 具有放大或缩小时间的批量数据问题的谷歌地图聚类
- php - laravel(5.5) 集合的保存方法没有结果
- c++ - 函数返回的临时 unique_ptr 的句柄