Docker

【docker】mysqlのイメージを取得し起動

こんにちは、ともです。

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などの設定もしていきたいと考えています。