前回の記事でMySQLコンテナとWordPressコンテナを起動時に同一ネットワークに所属させ、Wordpressのトップページが表示できることを確認しました。
その際、docker runコマンドを複数回実行したり、Dockerネットワークを作成したりと、一つ一つをコマンドで行う必要がありました。
それらをより簡潔に実行する方法が、docker composeです。
- ■Docker Composeの良いところ
- ■Docker Composeのインストール
- ■Docker Composeを使ってみる
- ■補足1:docker-composeコマンド後の起動確認
- ■補足2:docker-compose upコマンドで生成した環境を停止/削除する
■Docker Composeの良いところ
・docker runコマンドのような長い引数の指定が不要になります。
・複数のコンテナを順番を制御して起動、削除することができます。
・コンテナ起動時に初期設定(任意のコマンド実行)ができます。
■Docker Composeのインストール
では、早速インストールからやっていきます。
出鼻をくじくようですが、DockerComposeはDockerEngineとは無関係です。
そのため、Dockerをインストールしただけでは使えません。
DockerComposeはPython製のツールとなっており、Pythonが必須です。
※パッケージはpipで管理します。
以降、作業対象はDockerホスト(Ubuntu20.04.1 LTS)で実行します。
1.Dockerホストのパッケージをアップデートします。
2.Python3のバージョンを確認します。
Ubuntu20.04にはデフォルトでPython3がインストールされている(はずな)ので、
Python3のバージョンを確認します。
3.pipをインストールします。
4.DockerComposeをインストールします。
5.DockerComposeがインストールされたことを確認します。
■Docker Composeを使ってみる
本題です。DockerComposeを使ってみます。
前回の記事と同じ構成(MySQLコンテナとWordpressコンテナ)を、
DockerComposeを利用して構築してみます。
1.作業用ディレクトリを作成します。
ここでは、/var/tmp/wpを作業用ディレクトリとして使うため、新規作成しました。
2.wpディレクトリ内に、「docker-compose.yaml」という名前でファイルを作成します。
※ファイル名は必ず「docker-compose.yaml」もしくは「docker-compose.yml」としてください。
※ファイルの中身は後述致します。
3.「docker-compose.yaml」を開き、下記の通り上書き保存します。
version: "3.8" services: mysqldb: image: mysql:5.7 networks: - wpnet volumes: - db_volume:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: P@ssw0rd MYSQL_DATABASE: wpdb MYSQL_USER: wpuser MYSQL_PASSWORD: P@ssw0rd wp: depends_on: - mysqldb image: wordpress networks: - wpnet ports: - 8888:80 restart: always environment: WORDPRESS_DB_HOST: mysqldb WORDPRESS_DB_NAME: wpdb WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: P@ssw0rd networks: wpnet: volumes: db_volume:
4./var/tmp/wpに移動し、以下コマンドを実行します。
docker-compose up -d
5.作成されたコンテナ状態を確認します。
作成されているコンテナ名(NAMES列)がdocker-compose.yamlで指定したサービス名(mysqldb , wp)と異なり、wp_wp_1 , wp_mysqldb_1となっています。
こちらは、手順3のコード内容の場合には想定通りの動きです。
※名前をしっかり付けたい方は下記の記事を参照ください。
6.ボリューム状態を確認します。
wp_db_volumeという名前でボリュームが作成されています。
※こちらについても別記事で取り上げようと思います。
7.ネットワーク状態を確認します。
wp_wpnetという名前でbridgeネットワークが作成されています。
※こちらについても下記を参照ください。
8.Wordpress にアクセスできることを確認します。
■補足1:docker-composeコマンド後の起動確認
以下コマンドで確認することができます。
■補足2:docker-compose upコマンドで生成した環境を停止/削除する
docker-compose up コマンドで生成した環境は、docker-compose down コマンドで停止/削除できます。
尚、停止だけを実施することはできず、削除(廃棄)まで実行されてしまいます。
docker-compose downにオプションを付けない限り、ボリュームは削除されません。
以上です。