sqlalchemy 无法连接到“127.0.0.1”上的 MYSQL 服务器
sqlalchemy cannot connect to MYSQL server on '127.0.0.1'
我正在尝试 docker调整 powerdns-admin 的大小,它需要通过 sqlalchemy 连接到我的 mariadb。
docker-撰写:
docker-compose.yml
version: "3"
services:
app:
image: ngoduykhanh/powerdns-admin:latest
container_name: powerdns_admin
ports:
- "9191:80"
logging:
driver: json-file
options:
max-size: 50m
environment:
- SQLALCHEMY_DATABASE_URI=mysql://root:dbpass@127.0.0.1/powerdns
- GUNICORN_TIMEOUT=60
- GUNICORN_WORKERS=2
- GUNICORN_LOGLEVEL=DEBUG
- OFFLINE_MODE=False # True for offline, False for external resources
当我 运行 docker-compose up 它只输出这个错误:
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")
当我这样做时 mysql -uroot -pdbpass
我可以成功连接。
我做的时候也一样:
mysql -uroot -pdbpass -h 127.0.0.1
mysql -uroot -pdbpass -h localhost
怎么了?
当您 运行 一个 docker 容器时,它的行为很像一台单独的机器。当您尝试连接到 127.0.0.1 时,您正在尝试连接到容器本身。由于您的容器不包含您的数据库,因此连接失败。
您可以从容器内部访问 IP 地址为 172.17.0.1 的主机。所以你的数据库 URI 应该是
SQLALCHEMY_DATABASE_URI=mysql://root:dbpass@172.17.0.1/powerdns
我正在尝试 docker调整 powerdns-admin 的大小,它需要通过 sqlalchemy 连接到我的 mariadb。
docker-撰写:
docker-compose.yml
version: "3"
services:
app:
image: ngoduykhanh/powerdns-admin:latest
container_name: powerdns_admin
ports:
- "9191:80"
logging:
driver: json-file
options:
max-size: 50m
environment:
- SQLALCHEMY_DATABASE_URI=mysql://root:dbpass@127.0.0.1/powerdns
- GUNICORN_TIMEOUT=60
- GUNICORN_WORKERS=2
- GUNICORN_LOGLEVEL=DEBUG
- OFFLINE_MODE=False # True for offline, False for external resources
当我 运行 docker-compose up 它只输出这个错误:
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")
当我这样做时 mysql -uroot -pdbpass
我可以成功连接。
我做的时候也一样:
mysql -uroot -pdbpass -h 127.0.0.1
mysql -uroot -pdbpass -h localhost
怎么了?
当您 运行 一个 docker 容器时,它的行为很像一台单独的机器。当您尝试连接到 127.0.0.1 时,您正在尝试连接到容器本身。由于您的容器不包含您的数据库,因此连接失败。
您可以从容器内部访问 IP 地址为 172.17.0.1 的主机。所以你的数据库 URI 应该是
SQLALCHEMY_DATABASE_URI=mysql://root:dbpass@172.17.0.1/powerdns