TANSAN

取り留めないメモ

Laradockでmysqlとphpmyadminの起動

概略

前回の続き

  • mysqlを初期状態のままとりあえずlaravel起動させた人
  • mysqlを設定し直して読み込めるようにするまで

参考資料

mysqlの設定

.envのmysqlを書き換え。

laradockの.envにあるMYSQLの設定を書き換える。mysql8は認証まわりでめんどくさいという話なので5.7で。

### MYSQL #################################################

# MYSQL_VERSION=latest
# MYSQL_DATABASE=default
# MYSQL_USER=default
# MYSQL_PASSWORD=secret

MYSQL_VERSION=5.7.22 # fixed version
MYSQL_DATABASE=booklife
MYSQL_USER=owner
MYSQL_PASSWORD=hogehoge

ビルドし直し※失敗版

phpmyadminを起動したら--build オプションをつけてビルドしろと出たので実施。 関係ないnginxまで巻き込まれてえらい時間がかかる。

docker-compose up --build -d nginx mysql phpmyadmin

phpmyadminhttp://localhost:8080からアクセス。 画面は開くがmysqlに繋がらない

設定更新前?のmysqlのデータディレクトリ削除

find . -name mysql
./.laradock/data/mysql
./.laradock/data/mysql/mysql
./laradock/laradock/mysql

laradock環境構築時にできた永続化されたデータベース本体。これをいったん削除する

sudo rm -rf ./.laradock/data/mysql

laradockディレクトリでリビルド

docker-compose build mysql
Building mysql
Step 1/9 : ARG MYSQL_VERSION=latest
Step 2/9 : FROM mysql:${MYSQL_VERSION}
ERROR: Service 'mysql' failed to build: invalid reference format

ここで謎にエラー。.env見ても特に問題なく。再実行するといけた。

立ち上げ直し

docker-compose up -d nginx mysql phpmyadmin

が、やはりphpmyadminは繋がらず。

mysqlの起動確認

docker-compose exec mysql bash 
mysql -u owner -p booklife
show databases;

で中身は見れるので、mysql自体は正常っぽい。

laravel側からのマイグレーション

/var/www# php artisan make:migration create_test_db_table
Created Migration: 2019_02_12_133510_create_test_db_table
/var/www# php artisan migrate
   Illuminate\Database\QueryException  : SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations)

スキーマ名がhomesteadになってるのでおかしい。(ここでnginxもbuildし直せば直ったかも?)

workspace(booklife)の.env修正

booklife側の.envを書き換える。

DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_DATABASE=homestead
# DB_USERNAME=homestead
# DB_PASSWORD=secret
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=booklife
DB_USERNAME=owner
DB_PASSWORD=hogehoge

再度マイグレーション実施。

php artisan make:migration create_test_db_table

で、こちらも問題なく動作確認。

phpmyadminはそもそもサーバの指定誤り

記事 を読み返すとそもそもログイン時の指定が以下じゃないとだめだった。

host: mysql
user: root
pass: root

これでphpmyadminにもログイン。