【发布时间】:2017-01-03 11:04:15
【问题描述】:
好的,所以已经尝试了一段时间来让它工作。这是我从头到尾运行的命令行,我得到一个Access denied... 错误,如下所示。
$ docker-compose up --build -d
$ docker exec -it flaskdocker_mysql_1 mysql -u root -p
mysql> CREATE DATABASE flask_docker;
mysql> CREATE USER `flask-docker`@`localhost` IDENTIFIED BY 'pass';
mysql> GRANT ALL PRIVILEGES ON flask_docker.* TO 'flask-docker'@'localhost';
mysql> exit
Bye
$ docker exec -it flaskdocker_web_1 python /usr/src/app/manage.py createdb
# rest of traceback
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, u"Access denied for user 'flask-docker'@'flaskdocker_web_1.flaskdocker_default' (using password: YES)")
这里是回购https://github.com/Amertz08/flask-docker
看起来 SqlAlchemy 引擎没有查看正确的容器。 'flask-docker'@'flaskdocker_web_1.flaskdocker_default' 是错误中显示的内容。
也许我没有正确理解它,但我在我的 docker-compose.yml 文件中链接了 mysql:mysql
web:
restart: always
build: ./app
volumes:
- /usr/src/app/static
expose:
- "5000"
environment:
FLASK_CONFIG: 'production'
links:
- mysql:mysql
command: /usr/local/bin/uwsgi --ini uwsgi.ini
然后在config.py 的配置对象中,我有以下...
MYSQL_USER = 'flask-docker'
MYSQL_PASS = 'pass'
MYSQL_HOST = 'mysql'
MYSQL_DB = 'flask_docker'
# Database info
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{usr}:{passwd}@{host}/{db}'.format(
usr=MYSQL_USER, passwd=MYSQL_PASS, host=MYSQL_HOST, db=MYSQL_DB
)
对此的任何帮助将不胜感激。
【问题讨论】:
-
您已将容器与名称
mysql关联。您无需将其称为flask_docker。此外,您可以只说mysql而不是mysql:mysql。仅当您使用不同名称(例如,mysql:flask_docker)映射容器时才需要后一种形式。 -
有效点。已更改,谢谢!
标签: python docker flask flask-sqlalchemy docker-compose