使用 docker-compose,我尝试从以下位置查看 Flask 应用程序manage.py runserver
与 postgres 图像连接,但出现以下错误:
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
Is the server running on host "0.0.0.0" and accepting
TCP/IP connections on port 5432?
我的撰写文件
version: '3.1'
services:
app:
build: .
ports:
- 5000:5000
volumes:
- /Users/sammy/Projects/my_flask_app:/my_flask_app
container_name: my_flask_app_1
depends_on:
- db
entrypoint: ["python", "manage.py", "runserver"]
db:
image: postgres:10
restart: always
container_name: my_app_db_1
environment:
POSTGRES_USER: ubuntu
POSTGRES_PASSWORD: pickles
POSTGRES_DB: db
ports:
- 5432:5432
从我的应用程序settings.py
FILE
POSTGRES = {
'user': "ubuntu",
'pw': "pickles",
'db': "db",
'host': os.getenv('IP', '0.0.0.0'),
'port': '5432',
}
SQLALCHEMY_DATABASE_URI = 'postgresql://%(user)s:\
%(pw)s@%(host)s:%(port)s/%(db)s' % POSTGRES
它可以很好地构建和运行应用程序,因为我可以访问该站点并查看 Werkzeug 回溯解释器。我的 Postgres 容器本身的配置或我的 Flask 与其连接失败。
- 环境变量是否正确?
- 我需要为数据库指定一个卷吗?如果是这样,为什么?除了将用户名/通行证塞入环境变量之外,我不明白这一点。
settings.py 文件中的主机应该是“db”。 compose 公开内部网络上与您的服务具有相同主机名的主机。
POSTGRES = {
'user': "ubuntu",
'pw': "pickles",
'db': "db",
'host': "db",
'port': '5432',
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)