python – Docker,Flask,SQLAlchemy:ValueError:基数为10的int()的无效文字:’无’

前端之家收集整理的这篇文章主要介绍了python – Docker,Flask,SQLAlchemy:ValueError:基数为10的int()的无效文字:’无’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个烧瓶应用程序,可以成功初始化并连接到Postgresql数据库.但是,当我尝试将此应用程序停靠时,我收到以下错误消息. “sqlALCHEMY_DATABASE_URI”是正确的,我可以连接到它,所以我无法弄清楚我哪里出错了.

docker-compose日志

  1. app_1 | File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/url.py",line 60,in __init__
  2. app_1 | self.port = int(port)
  3. app_1 | ValueError: invalid literal for int() with base 10: 'None'

Postgres数据库在Docker容器中成功连接

  1. postgres_1 | LOG: database system is ready to accept connections

config.py

  1. from os import environ
  2. import os
  3. RDS_USERNAME = environ.get('RDS_USERNAME')
  4. RDS_PASSWORD = environ.get('RDS_PASSWORD')
  5. RDS_HOSTNAME = environ.get('RDS_HOSTNAME')
  6. RDS_PORT = environ.get('RDS_PORT')
  7. RDS_DB_NAME = environ.get('RDS_DB_NAME')
  8. sqlALCHEMY_DATABASE_URI = "postgresql+psycopg2://{username}:{password}@{hostname}:{port}/{dbname}"\
  9. .format(username = RDS_USERNAME,password = RDS_PASSWORD,\
  10. hostname = RDS_HOSTNAME,port = RDS_PORT,dbname = RDS_DB_NAME)

flask_app.py(入口点)

  1. def create_app():
  2. app = Flask(__name__,static_folder="./static",template_folder="./static")
  3. app.config.from_pyfile('./app/config.py',silent=True)
  4. register_blueprint(app)
  5. register_extension(app)
  6. with app.app_context():
  7. print(db) -> This prints the correct path for sqlALCHEMY_DATABASE_URI
  8. db.create_all()
  9. db.session.commit()
  10. return app
  11. def register_blueprint(app):
  12. app.register_blueprint(view_blueprint)
  13. app.register_blueprint(race_blueprint)
  14. def register_extension(app):
  15. db.init_app(app)
  16. migrate.init_app(app)
  17. app = create_app()
  18. if __name__ == '__main__':
  19. app.run(host='0.0.0.0',port=8080,debug=True)

Dockerfile

  1. FROM ubuntu
  2. RUN apt-get update && apt-get -y upgrade
  3. RUN apt-get install -y python-pip && pip install --upgrade pip
  4. RUN mkdir /home/ubuntu
  5. WORKDIR /home/ubuntu/celery-scheduler
  6. ADD requirements.txt /home/ubuntu/celery-scheduler/
  7. RUN pip install -r requirements.txt
  8. COPY . /home/ubuntu/celery-scheduler
  9. EXPOSE 5000
  10. CMD ["python","flask_app.py","--host","0.0.0.0"]

泊坞窗,compose.yml

  1. version: '2'
  2. services:
  3. app:
  4. restart: always
  5. build:
  6. context: .
  7. dockerfile: Dockerfile
  8. volumes:
  9. - .:/app
  10. depends_on:
  11. - postgres
  12. postgres:
  13. restart: always
  14. image: postgres:9.6
  15. environment:
  16. - POSTGRES_USER=${RDS_USERNAME}
  17. - POSTGRES_PASSWORD=${RDS_PASSWORD}
  18. - POSTGRES_HOSTNAME=${RDS_HOSTNAME}
  19. - POSTGRES_DB=${RDS_DB_NAME}
  20. ports:
  21. - "5432:5432"
最佳答案
您需要在Dockerfile中使用ENV键值设置环境变量RDS_USERNAME,RDS_PASSWORD,RDS_HOSTNAME,RDS_PORT和RDS_DB_NAME,例如

  1. ENV RDS_PORT 5432

猜你在找的Docker相关文章