📌

【インフラ_20日目】Docker_1冊目

2024/08/21に公開

こんにちは投資ロウトです。

背景

・過去に簡単にDockerの学習を行っておりましたが、環境構築を行なっていく必要があり、急ピッチでDockerを習熟してサービスをリリースしていかなければいけない背景があります。

WordPress

WordPressは、Apacheやデータベース、PHPが必要となるため、トレーニングには最適とのことで、WordPress公式が提供しているイメージがあり、そのイメージには、WordPressとApache、PHPの実行環境が含まれたコンテナであるとのことでした。

【構成】
WordPress = WordPressコンテナ + MySQLコンテナ

またコンテナをただ作るだけでは、コンテナ同士がつながらないので、仮想ネットワークを作り、そこに二つのコンテナを配置することで、コンテナを繋げるとのことです。

# 仮想ネットワークを作るコマンド
docker network create ネットワーク名

MySQLコンテナ起動時

docker run  ... --net=ネットワーク名 -e 環境変数の設定 ...(使用する引数)

(Option)
--net・・・ネットワークを繋げるもの

-e・・・環境変数の設定
→MySQLでは、rootのパスワードや、データベース領域名、MySQLのユーザー名、MySQLのパスワードが設定されていました。

使用する引数
--character-set-server=・・・文字コード(UTF-8は「utf8mb4」)
--collation-server=・・・照合順序(UTF-8にするなら「utf8mb4_unicode_ci」)
--default-authentication-plugin=・・・認証方式を古いやつにする「mysql_native_password」
※MySQL5→8に切り替わった時に接続方法が変わったため。(WordPressやphpMyAdminから新しい方法は接続できないとのことでした)

また注意事項として、MySQLコンテナを先に作成する必要があることと、ネットワークの作成を作ることを忘れないようにしなければならないとのことでした。

ハンズオン

まずはネットワークを作成

docker network create doshipress000net1

ネットワークが作成されたか確認

docker network ls

ネットワークがあることを確認。

MySQLのコンテナを作成

docker run --name doshimysql000ex1 -dit --net=doshipress000net1 -e 設定したい環境変数... mysql 設定したい引数...

コンテナの追加確認

docker ps -a

コンテナも作成されている。

WordPressのコンテナの作成

docker run --name doshipress000ex1 -dit --net=doshipress000net1 -p 8081:80 -e 設定したい環境変数... wordpress

コンテナを確認。

docker ps

Wordpressサーバーだけ立ち上がっており、MySQLサーバーが立ち上がっておらず、dockerの起動コマンドを行ってもすぐに落ちてしまう。

そのためログを確認

docker logs コンテナID

原因となったログは下記が原因の一つだった可能性があるので、作り直す

YYYY-MM-DDTHH:MM:ss.000000 0 [ERROR] [MY-000067] [Server] unknown variable 'collaction-server=utf8mb4_unicode_ci'.

環境変数名の入力が誤っていた。

再度実施

docker ps

今度は起動されているっぽい。localhost:8081にアクセス

DBが繋げていないとのこと。確認すると、DBのホストが間違って入力されていた。作り直しをする。

今度はうまくいっていそうですね。

お片付けも忘れずに行っていきます。
(以下の削除)
・コンテナ
・イメージ
・ネットワーク

と短いですが、以上で学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツ頑張っていきたいと思います。

Discussion