我正在尝试让我的网站(来自 docker 容器,位于谷歌云平台虚拟机内)和首页工作得很好。
但是当我尝试访问主页以外的任何其他页面时,例如:http://34.130.236.145:25556/metainfo/1
它说
requests.exceptions.ConnectionError: HTTPConnectionPool(host=34.130.236.145,
port=25555): Max retries exceeded with url: /metainfo/1 (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7cee6c119100>:
Failed to establish a new connection: [Errno 111] Connection refused'))
这是我的域代码:
@app.route('/metainfo/<file_number>')
def getMetaPageInfo(file_number): #pragma: no cover
response = requests.get('http://' + BACK_END_IP + ':' + BACK_END_PORT + '/metainfo/'
+ file_number)
data = None
if response.status_code == 200:
data = json.loads(response.content.decode('utf-8'))
else:
data = {'message': 'Impossible de contacter l\'api'}
return page_template('Méta-Information', data)
以及调用您看到的两个变量的代码:
app = Flask('memoryanalysisfe')
TEMPLATE_FOLDER = app.root_path + '/project/app/templates/'
BACK_END_IP = 'backend'
BACK_END_PORT = '25555'
为了获得更多说明,BACK_END_IP = '34.130.236.145' 的设置如下,因为如果我输入其他内容,它会给我:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='backend', port=25555):
Max retries exceeded with url: /bitmap/1 (Caused by NameResolutionError("
<urllib3.connection.HTTPConnection object at 0x7f6c74909f10>: Failed to resolve
'backend' ([Errno -2] Name or service not known)"))
另外,我的前端 docker 文件是
FROM demers/python420w4a
COPY ./requirements.txt /
RUN pip3 install -r /requirements.txt
RUN apt-get update -y
RUN apt-get install -y xxd
WORKDIR /var/lib
CMD ["./run.sh", "./project/app/memoryfront.py", "25556"]
这是我的后端:
FROM demers/python420w4a
COPY ./requirements.txt /
RUN pip3 install -r /requirements.txt
RUN apt-get update -y
RUN apt-get install -y xxd
WORKDIR /var/lib
CMD ["./run.sh", "./project/main/memoryapi.py", "25555"]
这是我的 ./startDocker.sh 脚本:
#!/bin/bash
sudo aa-remove-unknown
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
vol_name=memory_ad_vol
api_cont_name=memoryapi_ad_cnt
api_image_name=memoryapi_ad_img
website_cont_name=memorywebsite_ad_cnt
website_image_name=memorywebsite_ad_img
echo "Début du lancement de l'api et du Site Web dans Docker"
echo "Le nom pour l'image de l'api: $api_image_name"
echo "Le nom pour l'image du Site Web: $website_image_name"
echo "Le nom du volume où vont ce trouver les images et conteneurs: $vol_name"
echo "Le nom pour le conteneur de l'api: $api_cont_name"
echo "Le nom pour le conteneur du Site Web: $website_cont_name"
###CLEANUP
echo "Stoping everything"
docker-compose -f "$SCRIPT_DIR/docker-compose.yml" down
###REBUILD
echo "Creating everything"
docker-compose -f "$SCRIPT_DIR/docker-compose.yml" up -d
最后,我的 docker-compose.yml 文件:
version: '3.8'
services:
memory_Backend:
build:
context: ./
dockerfile: ./project/docker/dockerfilebackend
image: memoryapi_ad_img
volumes:
- ./:/var/lib
ports:
- 25555:25555
memory_Frontend:
build:
context: ./
dockerfile: ./project/docker/dockerfilefrontend
image: memorywebsite_ad_img
volumes:
- ./:/var/lib
ports:
- 25556:25556
预先感谢您对我的帮助!
我刚刚将端口从 15555:25555 更改为 25555:25555,并将后端的 IP 地址放入变量中。