こんにちは、ともです。
dockerでwordpressの環境構築を自分でしながら、dockerの勉強中です。
アプリケーションは3層を想定しており、Apachをアプリケーションサーバ兼Webサーバとし、DBをMysqlにする予定です。
そのためにまずはDBから攻めていこうと考えています。dockerの環境構築は完了している前提で話を進めます。
MySQLのイメージをDockerHubから取得
Docker Hubに色々なイメージがアップロードされています。そこからmysqlのイメージを取得しましょう。
docker pull mysql:5.7.22
mysqlのイメージをバージョンは5.7.22で取得できます。
MySQLのイメージの確認と起動(失敗編)
docker images
でmysql:5.7.22がpullできたことを確認しましょう。
次に、mysqlを起動しましょう。
docker run --name mysql -p 5432:5432 -d mysql:5.7.22
3ac115642f45e94a50c3b92269515c4e27860a5a34980444c19639521e4ceb2a
コンテナの名前をmysqlに設定しポートを5432としました。コンテナIDが出力されましたね。
次に、起動できているか次のコマンドで確認しましょう。
docker ps -a
STATUSを確認して下さい。Exited (1)
となっているのではないでしょうか?これは停止している状態であり、うまく起動できませんでした。
起動したコンテナの出力するログを確認してみます。
docker logs 3ac115642f45
次のように出力されたのではないでしょうか?
error: database is uninitialized and password option is not specifiedYou need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
環境変数、MYSQL_ROOT_PASSWORD・MYSQL_ALLOW_EMPTY_PASSWORD・MYSQL_RANDOM_ROOT_PASSWORDのうち、1つも設定されておらず、初期化されていません、というエラーですね。
ですので、起動時に環境変数を設定するようにします。
MySQLのイメージの確認と起動(成功編)
docker rm 3ac115642f45
先ほど起動したコンテナを削除しておきましょう。
次に、環境変数を設定しコンテナを起動するように設定してみます。
docker run --name mysql -e MYSQL_ROOT_PASSWORD="password" -p 5432:5432 -d mysql:5.7.22
-eオプションで環境変数を設定できるので上記のようにPASSWORDを設定しました。パスワードは適切なものを設定して下さいね。
docker ps -a
で起動したmysqlのコンテナがうまく起動できているか確認してみましょう。STATUSがUp
になっているのではないでしょうか。今回はこれで成功です。
まとめ
DockerでMySQLを起動するまでができました。
うまくいかない時は、コンテナのログを確認する習慣をつけていきましょう。次回以降はApacheなどの設定もしていきたいと考えています。