我的 GCP vm api 网站的第一页可以工作,但其他页面不行,为什么?

问题描述 投票:0回答:1

我正在尝试让我的网站(来自 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

预先感谢您对我的帮助!

linux docker http google-cloud-platform
1个回答
0
投票

我刚刚将端口从 15555:25555 更改为 25555:25555,并将后端的 IP 地址放入变量中。

© www.soinside.com 2019 - 2024. All rights reserved.