Docker公式RedmineでMySQLを接続したら失敗したので、その備忘録。
エラー内容
Mysql2::Error: Access denied for user 'root'@'172.17.0.4' (using password: NO)
前回の学び[http://qiita.com/chikin14niwa/items/ed61e41b0fafa84ee871] でMySQLコンテナをリンクすると環境変数が引き継がれることはわかっているので、using password: NOと出るのはおかしい。
docker-entrypoint.shを読み、mysql用に以下の環境変数があることがわかった。
設定可能なシステム変数は以下の変数
- MYSQL_ENV_MYSQL_USER
- MYSQL_ENV_MYSQL_PASSWORD
- MYSQL_ENV_MYSQL_DATABASE
用途は以下の通り
環境変数名 | 利用用途 | 未設定の場合 |
---|---|---|
MYSQL_ENV_MYSQL_USER | データベースのユーザ名 | root |
MYSQL_ENV_MYSQL_PASSWORD | データベースのパスワード | 環境変数MYSQL_ENV_MYSQL_ROOT_PASSWORDの値。 |
MYSQL_ENV_MYSQL_DATABASE | データベース名 | 環境変数MYSQL_ENV_MYSQL_USERの値。未設定の場合redmineが使用される。 |
結局以下の手順で対応
- MySQLにデータベースを作成する。
- 1で作成したデータベースを使用できるユーザを作成する。
- docker runでredmineを起動するときに環境変数に MYSQL_ENV_MYSQL_USER, MYSQL_ENV_MYSQL_PASSWORD, MYSQL_ENV_MYSQL_DATABASEを指定する。
無事起動しました。