2020/03/12
LaradockにあるMySQLの設定を変更したのですが、コンテナを再起動しても反映されませんでした。
結構はまってしまったので、備忘録として調査内容をまとめておきます。
問題
・ AWS上にて Laradock で Laravel の環境を作った。
・ パスワードがデフォルトの『secret』なので別のパスワード名に変更する。
・ Laradock の .envファイルのパスワードを変更してコンテナを再起動。
・ Laravel側の .envファイルも変更 + php artisan config:cache
済み。
・ MySQLにログインできなくなる。
調査
・ 変更前のパスワード『secret』だとログインできる。
・ どうやらMySQLコンテナを再起動してもenvファイルは反映されないみたいだ。
解決策
・ MySQLのイメージとコンテナ、データを削除する。
・ もう一度、MySQLのイメージとコンテナを入れなおす。
・ パスワードが変更された。
手順
1.Laradock側のenvファイルを編集
Laradock側の環境ファイル(.env)を vi で編集します。
vi の使い方については以下をご参考ください。
# Laradockのファイルまで移動
$ cd laravel_app4/laradock/
# root権限になっておく
$ sudo su
# Laradockの環境ファイルを編集
$ vi .env
2.イメージの削除
# 現状のイメージの確認
# docker images
# イメージの削除
# docker rmi イメージID
# 削除できなかったので強制的に削除
# docker rmi -f イメージID
実演
3.コンテナの削除
# 現状のコンテナの確認
# docker ps -a
# コンテナの削除
# docker rm コンテナID
4.データの削除
# データの削除
# rm -rf ~/.laradock/data/mysql/
5.MySQLコンテナを再ビルド
# 再ビルド
# docker-compose up -d mysql
image構築 | コンテナ構築 | コンテナ起動 | |
---|---|---|---|
docker-compose build |
〇 | × | × |
docker-compose up |
△ | 〇 | 〇 |
docker-compose start |
× | × | 〇 |
docker-compose run |
〇(単独) | 〇(単独) | 〇(単独) |
- buildコマンド
- imageを構築します。コンテナは作成しません。
- upコマンド
- キャッシュがある場合はそれを使って一発でイメージの構築から、コンテナの構築・起動までします。imageがなくてもbuildから実行してくれます。
- startコマンド
- 既存のコンテナを起動します。
- runコマンド
- imageの構築から、コンテナの構築・起動までしてくれます。
実演
6.Laravel側のenvファイルを編集
# 起動中のコンテナのシェルへ接続
# docker-compose exec workspace bash
/var/www# vi .env
7.動作確認
# Laravelのコンテナから抜ける
# exit
# SSHでMySQLにアクセス
# docker-compose exec mysql bash
# MySQLにrootユーザにログイン
# mysql -uユーザ名 -p新パスワード
実演
ログイン成功したらOKです。
以上です。
自宅ではじめるDocker入門
Docker関連の数ある本でも、図や丁寧な解説で「わかりやすい」と評判がいい本です。コマンドを叩きながら、Dockerにおける「イメージ」「コンテナ」が理解できます。まだ、Kindle版が出てないのは惜しいですが、Docker入門としておススメの1冊です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。