我是Docker的新手,正在尝试使用docker-compose.yml文件将2个烧瓶容器连接在一起:
docker-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:
backend.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')
frontend.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 --version
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
答案 0 :(得分:0)
如果您使用相同的compose文件,则docker-compose将从其中创建一个默认网络,删除网络定义,并且应使用http://backend:5000
作为URL来访问它们。
当您致电docker-compose up
时,会发现这就是为撰写文件中的所有服务创建默认网络,您可以使用docker network ls
进行查看。
要从默认网络访问服务,请使用http//:<service_name>:<port>
,其中为您提供的服务为backend
和frontend
。
当您要桥接到不共享公共网络的容器时,将使用网络定义。
删除网络定义后,您还可以使用http://localhost:5000
访问后端节点。