■ はじめに
https://dk521123.hatenablog.com/entry/2022/01/14/102719
https://dk521123.hatenablog.com/entry/2022/02/22/000000
の続き。 今回は、もう少し難易度があがり、複数の コンテナでやりとりする例として WordPress を立ち上げるハンズオンをやってみる。 おさらいの意味で、Redmine もやってみる(基本同じ。以下の関連記事を参照のこと)。
https://dk521123.hatenablog.com/entry/2023/01/09/000000
Dockerはあまり実務で使わないので、結構、いい勉強になる。
補足1:元ネタとなった図書館で借りた本
目次
【0】目的 1)全体の流れ 【1】ネットワークの作成 1)コマンド例 【2】MySQLコンテナ作成 1)構文 2)コマンド例 【3】WordPressコンテナ作成 1)構文 2)コマンド例 【4】動作確認 1)コンテナ稼働の確認 2)ブラウザによる確認 【5】後始末 1)コマンド例
【0】目的
* 今回の学習目的として、複数コンテナ(MySQL & WordPress) を入れて運用する必要があるので、以下を学べる ~~~~~~ [1] Dockerネットワーク作成/削除 [2] 複数コンテナの連携 [3] Dockerコンテナ作成/削除(復習として) [4] dockerコマンド(復習として) ~~~~~~
1)全体の流れ
【1】ネットワークの作成 【2】MySQLコンテナ作成 【3】WordPressコンテナ作成 【4】動作確認 【5】後始末
【1】ネットワークの作成
* WordPressは、以下で構成される ~~~~~~~ [1] WordPressコンテナ [2] DBコンテナ(今回の場合、「MySQLコンテナ」) ~~~~~~~ * 「[1] WordPressコンテナ」⇒「[2] DBコンテナ」へアクセスする必要があるのだが そのためには、仮想的なネットワークを作り、双方のコンテナを所属させることで コンテナ間の通信が可能になる => docker network の詳細については、以下の関連記事を参照のこと
Docker ~ 基本編 / docker network ~
https://dk521123.hatenablog.com/entry/2022/04/30/000000
1)コマンド例
# クライアントとデーモン API の両方が、少なくとも 1.21 が必要 docker network create wordpress-network # 「33b17...」的な文字列(ネットワークID)が表示されるはず # 作成失敗して削除したい場合 # docker network rm wordpress-network # 確認 docker network ls <Output> NETWORK ID NAME DRIVER SCOPE 33b17... wordpress-network bridge local
【2】MySQLコンテナ作成
1)構文
docker container run --name <Container Name> # d:バックグラウンドで実行 # i: コンテナにキーボードを繋ぐ # t: 特殊キーを使用可能にする -dit # 【1】で設定したネットワークを指定 # (今回の場合「wordpress-network」) --net <Network Name> # ポートの設定(任意) -p <物理マシンのポート>:<コンテナのポート(MySQL 3306)> # MySQLの環境変数の設定 -e MYSQL_DATABASE=<Database> -e MYSQL_USER=<User Name> -e MYSQL_PASSWORD=<User password> -e MYSQL_ROOT_PASSWORD=<Roo user password> # 対象コンテナのイメージ : MySQL mysql # MySQL設定 --character-set-server=<文字コード(e.g. 'utf8mb4')> --collation-server=<照合順序(e.g. 'utf8mb4_unicode_ci')> --default-authentication-plugin=<認証方式 (e.g. 'mysql_native_password')>
2)コマンド例
# MySQLコンテナ作成例 docker container run \ --name mysql-for-wordpress \ -dit \ --net wordpress-network \ -p 13306:3306 \ -e MYSQL_DATABASE=wordpress_db \ -e MYSQL_USER=wordpress_admin \ -e MYSQL_PASSWORD=password \ -e MYSQL_ROOT_PASSWORD=root_password \ mysql \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_unicode_ci \ --default-authentication-plugin=mysql_native_password
【3】WordPressコンテナ作成
1)構文
docker container run --name <Container Name> # d:バックグラウンドで実行 # i: コンテナにキーボードを繋ぐ # t: 特殊キーを使用可能にする -dit # 【1】で設定したネットワークを指定 # (今回の場合「wordpress-network」) --net <Network Name> # ポートの設定 -p <物理マシンのポート>:<コンテナのポート(Apache HTTP 80)> # WordPressの環境変数の設定 -e WORDPRESS_DB_HOST=<DB container name (今回の場合「mysql-for-wordpress」)> -e WORDPRESS_DB_NAME=<DB name (今回の場合「wordpress_db」)> -e WORDPRESS_DB_USER=<User name (今回の場合「wordpress_admin」)> -e WORDPRESS_DB_PASSWORD=<DB user password (今回の場合「password」)> # 対象コンテナのイメージ : WordPress wordpress
2)コマンド例
# WordPressコンテナ作成例 docker container run \ --name helloworld_wordpress \ -dit \ --net wordpress-network \ -p 18080:80 \ -e WORDPRESS_DB_HOST=mysql-for-wordpress \ -e WORDPRESS_DB_NAME=wordpress_db \ -e WORDPRESS_DB_USER=wordpress_admin \ -e WORDPRESS_DB_PASSWORD=password \ wordpress
【4】動作確認
1)コンテナ稼働の確認
コマンド例
# コンテナ稼働の確認(2つのコンテナが「STATUS: Up」だったらOK) docker container ps <Output> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 44a28... wordpress "docker-entrypoint.s…" 53 seconds ago Up 51 seconds 0.0.0.0:18080->80/tcp, :::18080->80/tcp helloworld_wordpress 33b17... mysql "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql-for-wordpress
2)ブラウザによる確認
* ブラウザで以下のURLにアクセス => WordPress の画面がでてきたらOK
【5】後始末
* 具体的には、以下を行う [1] コンテナ停止 [2] コンテナ削除 [3] イメージ削除 [4] ネットワーク削除
1)コマンド例
[1] コンテナ停止
# docker container stop <Container Name> docker container stop helloworld_wordpress docker container stop mysql-for-wordpress
[2] コンテナ削除
# docker container rm <Container Name> docker container rm helloworld_wordpress docker container rm mysql-for-wordpress # 確認 docker ps -a
[3] イメージ削除
# docker image rm <Image Name> docker image rm wordpress docker image rm mysql # 確認 docker image ls
[4] ネットワーク削除
# docker network rm <Network Name> docker network rm wordpress-network # 確認 docker network ls
関連記事
Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
Docker ~ 基本編 / docker network ~
https://dk521123.hatenablog.com/entry/2022/04/30/000000
Docker ~ GO言語 ~
https://dk521123.hatenablog.com/entry/2022/01/14/102719
Docker ~ Webサーバ ~
https://dk521123.hatenablog.com/entry/2022/02/22/000000
Docker ~ Redmine ~
https://dk521123.hatenablog.com/entry/2023/01/09/000000
Docker ~ LAMP ~
https://dk521123.hatenablog.com/entry/2023/01/12/000000