我尝试将烧瓶sqlalchemy容器与mysql容器连接。并配置它们之间的连接。 我有init_db python,可在我的项目中创建所有表:
from model import Base
engine = create_engine('mysql+pymysql://test:test@0.0.0.0/test')
Base.metadata.create_all(engine)
还有我的docker-compose:
version: '3'
services:
flask:
build: ./flask
container_name: flask
restart: always
depends_on:
- db
links:
- db
volumes:
- ./flask:/flask
depends_on:
- db
ports:
- 5000:5000
db:
image: mysql
container_name: mysql_db
environment:
- MYSQL_USER=test
- MYSQL_ROOT_PASSWORD=test
- MYSQL_PASSWORD=test
- MYSQL_DATABASE=test
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
volumes:
- ./db:/docker-entrypoint-initdb.d
restart: always
ports:
- 3308:3308
当我尝试使用sqlalchemy将数据保存在我的数据库中时,收到错误消息:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '0.0.0.0' ([Errno 111] Connection refused)")
我尝试为数据库添加sql文件,但无济于事。当我打开数据库容器时,测试数据库不存在。
答案 0 :(得分:1)
在这种由docker组成的环境中,flask
容器可以到达位于{s {1}}处的db
容器,而不能到达db
上的容器。
因此,您将不得不像这样更新代码
0.0.0.0