我正在尝试 dockersize powerdns-admin,它需要通过 sqlalchemy 连接到我的 mariadb。
码头工人组成:
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
怎么了?
答案 0 :(得分:1)
当您运行 docker 容器时,它的行为很像一台单独的机器。当您尝试连接到 127.0.0.1 时,您正在尝试连接到容器本身。由于您的容器不包含您的数据库,因此连接失败。
从容器内部,您可以访问 IP 地址为 172.17.0.1 的主机。所以你的数据库 URI 应该是
SQLALCHEMY_DATABASE_URI=mysql://root:dbpass@172.17.0.1/powerdns