これを動作させるにはしばらくお待ちください。ここでは最初から最後まで実行しているコマンドラインを示します。Access denied...
エラーが表示されます。ここでDockerでMySqlに接続できません。アクセス拒否エラーがスローされました。 Flask-SqlAlchemy
$ 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)")
は、レポはSQLAlchemyのエンジンが右コンテナを見ていないように見えますhttps://github.com/Amertz08/flask-docker
です。 'flask-docker'@'flaskdocker_web_1.flaskdocker_default'
がエラーに表示されます。
たぶん...
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
)
上の任意のヘルプを私は右のそれを理解していないですが、私はその後config.py
の私のconfigオブジェクトに、私は次のように持っている私のdocker-compose.yml
ファイル
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
でmysql:mysql
をリンクこれは非常に高く評価されます。
mysql> GRANT ALL PRIVILEGES ON flask_docker.* TO 'flask-docker'@'localhost';
あなたはlocalhostのユーザー
のための権限を付与しかし、あなたがflask-docker'@'flaskdocker_web_1.flaskdocker_default
ユーザーとしてMySQLを使用します。
。 'flask_docker'と呼ぶ必要はありません。また、 'mysql:mysql'の代わりに' mysql'だけを言うこともできます。後者の形式は、別の名前(例えば、 'mysql:flask_docker')でコンテナをマップする場合にのみ必要です。 – dirn
有効なポイント。ありがとうございました! – Adam