首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从web服务器访问坞化烧瓶应用程序的路由

无法从web服务器访问坞化烧瓶应用程序的路由
EN

Stack Overflow用户
提问于 2020-12-23 10:01:18
回答 2查看 518关注 0票数 0

我有一个烧瓶应用程序,运行在本地主机,甚至与码头。但一旦我部署它,它就不再起作用了。我后面有一个404错误信息,浏览器回答如下:

没有在服务器上找到请求的

。如果您手动输入了URL,请检查拼写,然后重试。

当我把localhost:5010/helloworld从我的服务器上打开时,我会得到一个空的答案。我不知道为什么,但似乎烧瓶服务器没有重新启动:

代码语言:javascript
复制
WARNING:root:no config found for parameter None default mode debug loaded
WARNING:flask_cors.core:Unknown option passed to Flask-CORS: headers
WARNING:flask_cors.core:Unknown option passed to Flask-CORS: headers
 * Serving Flask app "application" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
INFO:werkzeug: * Running on https://0.0.0.0:5000/ (Press CTRL+C to quit)
INFO:werkzeug: * Restarting with stat
WARNING:root:no config found for parameter None default mode debug loaded
WARNING:flask_cors.core:Unknown option passed to Flask-CORS: headers
WARNING:flask_cors.core:Unknown option passed to Flask-CORS: headers
WARNING:werkzeug: * Debugger is active!
INFO:werkzeug: * Debugger PIN: 899-121-971

run.py:

代码语言:javascript
复制
from application import create_app, db
import sys

from OpenSSL import SSL
context = SSL.Context(SSL.PROTOCOL_TLSv1_2)
context.use_privatekey_file('./ssl/server.key')
context.use_certificate_file('./ssl/server.crt')

# we set the app default  value is debug 
appStartingMode= None
if(len (sys.argv) >1):
    appStartingMode= sys.argv[1]

app = create_app(appStartingMode)

if __name__ == "__main__":
    app.debug = True
    app.use_reloader = True
    app.run(host=app.config['FLASK_HOST'], port=app.config['FLASK_PORT'],ssl_context = context)

Dockerfile:

代码语言:javascript
复制
FROM python:3.9.1

EXPOSE 5000

# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Switching to a non-root user, please refer to https://aka.ms/vscode-docker-python-user-rights
RUN useradd appuser && chown -R appuser /app
USER appuser

# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD [ "python", "./run.py" ]

船坞的一个提取物-合成物。

代码语言:javascript
复制
  bel-backend:
    container_name: bel-backend
    env_file: database-variables.env
    build:
      context: /home/ubuntu/sob/sob-2020-back-end
    ports:
      - 5010:5000
    depends_on :
      - mysql-server

我试图进入的路线是:

代码语言:javascript
复制
@app.route('/helloworld', methods=['GET'])
def helloWorld():
    print("ok")
    return 'Hello World !'

通过键入:https://ipofthemachine:5010/helloworld,即使https通过,因为我必须更新我的证书。有什么想法吗?

编辑

如果我共享config.py,情况会更好:

代码语言:javascript
复制
from os import environ, path
from dotenv import load_dotenv

basedir = path.abspath(path.dirname(__file__))
load_dotenv(path.join(basedir, '.env'))

class Config:
    """Base config."""
    SECRET_KEY = environ.get('SECRET_KEY')
    '''
    SESSION_COOKIE_NAME = environ.get('SESSION_COOKIE_NAME')
    STATIC_FOLDER = 'static'
    TEMPLATES_FOLDER = 'templates'
    '''

class DebugConfig(Config):
    # General Flask Config
    FLASK_ENV = 'development'
    DEBUG = False
    #TESTING = True
    FLASK_APP = 'run.py'
    FLASK_PORT=5000
    FLASK_HOST='0.0.0.0'


    # Database
    SQLALCHEMY_DATABASE_URI = environ.get('SQLALCHEMY_DATABASE_URI')
    SQLALCHEMY_ECHO = False
    SQLALCHEMY_TRACK_MODIFICATIONS = False
EN

回答 2

Stack Overflow用户

发布于 2020-12-23 10:05:05

添加到路由脚本的底部

代码语言:javascript
复制
if __name__ == '__main__':
    app.run(host='0.0.0.0')
票数 0
EN

Stack Overflow用户

发布于 2020-12-24 12:49:23

@Dunski我回答,因为如果我编辑它,主帖子将是很长的。

所以我照你说的做了:我硬编码了app.run。现在,我有:

代码语言:javascript
复制
appStartingMode= None
if(len (sys.argv) >1):
    appStartingMode= sys.argv[1]

app = create_app(appStartingMode)

Dockerfile:

代码语言:javascript
复制
FROM python:3.9.1

EXPOSE 5000
# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Switching to a non-root user, please refer to https://aka.ms/vscode-docker-python-user-rights
RUN useradd appuser && chown -R appuser /app
USER appuser

# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["flask", "run", "-host", "0.0.0.0", "-port", "5000"]

以及我在停靠库中读取的.env文件-撰写:

代码语言:javascript
复制
user=root                                                                    
password=*****                                                           
host=mysql                                                                 
port=3306                                                                   
database=bel_2020_db                                                        
                                                                 
SECRET_KEY=secret                                                          
FLASK_APP=run.py                                                           
FLASK_ENV=development                                                      
FLASK_DEBUG=0                                                               
SQLALCHEMY_DATABASE_URI=mysql://${user}:${password}@${host}:${port}/${database
}?charset=utf8mb4&binary&binary_prefix=true                                   
SQLALCHEMY_ECHO=0                                                             
SQLALCHEMY_TRACK_MODIFICATIONS=0 

现在,我试着用服务器本身的ip地址卷起码头.不管用!一切都在本地运作..。我开始失去希望了。服务器确实收到请求,但返回404.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65422371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档