首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从Tortoise/Python连接到Docker mySQL实例,除非我首次从Docker PHPMyAdmin连接到mySQL实例

无法从Tortoise/Python连接到Docker mySQL实例,除非我首次从Docker PHPMyAdmin连接到mySQL实例
EN

Stack Overflow用户
提问于 2021-10-15 23:45:54
回答 1查看 139关注 0票数 1

在下面的docker中描述的“rest”服务-Compose.yaml在启动时运行一个python脚本,试图连接到'db‘服务的mysql实例。

每次我运行docker时,所有服务都会成功启动,但是“rest”服务报告“无法连接到mySQL db”,在调试控制台中连续运行。

这个问题的一个非常奇怪的解决方法似乎是打开phpMyAdmin,并首先通过它登录到mySQL实例。一旦我从mySQL登录到phpMyAdmin数据库,我将返回到docker-compose控制台,并且我看到'rest‘python脚本已经成功地建立了它的db连接。

我已经一遍又一遍地验证了这种行为,但是不知道为什么mySQL实例需要我在python脚本建立自己的连接之前登录phpMyAdmin .

我的python/tortoise连接代码如下:

代码语言:javascript
复制
DATABASE_URL = "mysql://{}:{}@{}:{}/{}".format(
    os.environ["MYSQL_USER"],
    os.environ["MYSQL_PASSWORD"],
    os.environ["MYSQL_HOST"],
    os.environ["MYSQL_PORT"],
    os.environ["MYSQL_DATABASE"],
)

register_tortoise(
    app, db_url=DATABASE_URL, modules={"models": ["models"]}, generate_schemas=False
)

Docker-compose.yaml

代码语言:javascript
复制
services:
    db:
        image: mysql:latest
        restart: always
        environment:
            MYSQL_DATABASE: "bbms"
            MYSQL_USER: "bbms"
            MYSQL_PASSWORD: "B37PTdaWvbUQm"
            MYSQL_ROOT_PASSWORD: "asdasdasdasd"
        ports:
          - "3306:3306"
        volumes:
          - dbdata:/var/lib/mysql

    phpmyadmin:
        image: phpmyadmin:latest
        depends_on: [ db ]
        ports:
          - "8080:80"
        environment:
          - PMA_HOST=db
          - PMA_PORT=3306
        restart: unless-stopped

    rest:
        build:
          context: ./
          dockerfile: ./docker/rest/Dockerfile
        restart: always
        depends_on: [ db ]
        environment:
            MYSQL_DATABASE: "bbms"
            MYSQL_USER: "bbms"
            MYSQL_PASSWORD: "B37PTdaWvbUQm"
            MYSQL_HOST: db
            MYSQL_PORT: 3306
        volumes:
          - ./src:/app
        ports:
          - "5000:5000"

networks:
    default:
      name: qibbms_net
      ipam:
          driver: default
          config:
              - subnet: "172.12.2.0/24"
volumes:
    dbdata:
EN

回答 1

Stack Overflow用户

发布于 2022-07-09 21:54:24

我的申请也有同样的问题。当我检查异常堆栈跟踪时,我发现了这一行代码:

代码语言:javascript
复制
'cryptography' package is required for sha256_password

所以我安装了密码软件包:

代码语言:javascript
复制
pip install cryptography

我的问题解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69591624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档