(pymysql.err.OperationalError)(2003,“无法连接到'0.0.0.0'上的MySQL服务器([Errno 111]连接被拒绝)”)

时间:2020-05-17 07:07:22

标签: mysql docker sqlalchemy

我尝试将烧瓶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文件,但无济于事。当我打开数据库容器时,测试数据库不存在。

1 个答案:

答案 0 :(得分:1)

在这种由docker组成的环境中,flask容器可以到达位于{s {1}}处的db容器,而不能到达db上的容器。

因此,您将不得不像这样更新代码

0.0.0.0