Docker Error 2002 SQLAlchemy

我目前正在与MySQL / SQLAlchemy Flask应用程序。

我试图dockerize它,但它有一些问题连接到其中一个sockets。 我已经看了几乎所有关于这个问题,但我仍然得到这个错误。

“sqlalchemy.exc.OperationalError 🙁 _mysql_exceptions.OperationalError)(2002,”无法通过套接字连接到本地MySQL服务器“/var/run/mysqld/mysqld.sock'(2)”

我目前正在研究Mac和Mac的terminal程序。

我的文件夹树是:MainFolder – > .yml,db(文件夹),www(文件夹)

其中数据库(文件夹)有一个Dockerfile和www(文件夹)有.py,要求和Dockerfile

下面列出的是我的代码为这个应用程序。

泊坞窗,compose.yml

version: '3' services: www: build: www/. ports: - 5000:5000 links: - db depends_on: - db db: build: db/. volumes: - ./[database]:/usr/local/mysql environment: MYSQL_ROOT_PASSWORD: [password] 

Dockerfile(用于www)

 FROM python:3-onbuild # Place app in container COPY . /opt/www WORKDIR /opt/www RUN pip3 install -r requirements.txt EXPOSE 5000 CMD python index.py 

(db)的Dockerfile

 # MySQL Container FROM mysql:5.7.18 EXPOSE 3306 CMD ["mysqld"] 

index.py

 app = Flask(__name__) # Configure your MySQL Connection db = SQLAlchemy() db_uri = 'mysql://root:password@localhost/[database]' app.config['SQLALCHEMY_DATABASE_URI'] = db_uri app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) class Database(db.Model): versionID = db.Column('versionID', db.Integer, primary_key=True) versionText = db.Column('versionText', db.String(500), unique=False) def __init__(self, versionID, versionText): self.versionID = versionID self.versionText = versionText def serialize(self): return { 'VersionID' : self.versionID, 'VersionText' : self.versionText } @app.route("/") def test(): return jsonify(json_list=[i.serialize for i in Database.query.all()]) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) 

我的输出应该是在浏览器中的JSONforms,如下所示:

{json_list = [versionID:someID versionText:someText]}

就是这样

任何帮助表示赞赏! 一直试图解决这个问题! 干杯

根据文档 ,mysql启动时没有可以使用的数据库,除非你传递一个环境variables。

将其添加到您的docker-compose文件中的db部分:

 MYSQL_DATABASE: name-of-database 

连接string应该是:

 'mysql://root:password@db/name-of-database' 

根据你的docker工作人员,这样做是这样的:

 db_uri = 'mysql://root:password@db/[database]'