自由気ままに書いちゃおう

好きなことをつらつらと・・・

【Docker】Docker Composeを使ってみる

前回の記事でMySQLコンテナとWordPressコンテナを起動時に同一ネットワークに所属させ、Wordpressのトップページが表示できることを確認しました。

www.guri2o1667.work


その際、docker runコマンドを複数回実行したり、Dockerネットワークを作成したりと、一つ一つをコマンドで行う必要がありました。
それらをより簡潔に実行する方法が、docker composeです。

■Docker Composeの良いところ

・docker runコマンドのような長い引数の指定が不要になります。
・複数のコンテナを順番を制御して起動、削除することができます。
・コンテナ起動時に初期設定(任意のコマンド実行)ができます。

■Docker Composeのインストール

では、早速インストールからやっていきます。
出鼻をくじくようですが、DockerComposeはDockerEngineとは無関係です。
そのため、Dockerをインストールしただけでは使えません。

DockerComposeはPython製のツールとなっており、Pythonが必須です。
※パッケージはpipで管理します。

以降、作業対象はDockerホスト(Ubuntu20.04.1 LTS)で実行します。

1.Dockerホストのパッケージをアップデートします。

f:id:guri2o1667:20210531171100p:plain


2.Python3のバージョンを確認します。

Ubuntu20.04にはデフォルトでPython3がインストールされている(はずな)ので、
Python3のバージョンを確認します。

f:id:guri2o1667:20210531171124p:plain

3.pipをインストールします。

f:id:guri2o1667:20210531171418p:plain

4.DockerComposeをインストールします。

f:id:guri2o1667:20210531171521p:plain

5.DockerComposeがインストールされたことを確認します。

f:id:guri2o1667:20210531171600p:plain

 

■Docker Composeを使ってみる

本題です。DockerComposeを使ってみます。
前回の記事と同じ構成(MySQLコンテナとWordpressコンテナ)を、
DockerComposeを利用して構築してみます。


1.作業用ディレクトリを作成します。
ここでは、/var/tmp/wpを作業用ディレクトリとして使うため、新規作成しました。

f:id:guri2o1667:20210531171905p:plain

2.wpディレクトリ内に、「docker-compose.yaml」という名前でファイルを作成します。
※ファイル名は必ず「docker-compose.yaml」もしくは「docker-compose.yml」としてください。
※ファイルの中身は後述致します。

f:id:guri2o1667:20210601113256p:plain

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

f:id:guri2o1667:20210601113522p:plain


5.作成されたコンテナ状態を確認します。

f:id:guri2o1667:20210601113652p:plain

作成されているコンテナ名(NAMES列)がdocker-compose.yamlで指定したサービス名(mysqldb , wp)と異なり、wp_wp_1 , wp_mysqldb_1となっています。

こちらは、手順3のコード内容の場合には想定通りの動きです。
※名前をしっかり付けたい方は下記の記事を参照ください。

www.guri2o1667.work

 



6.ボリューム状態を確認します。

f:id:guri2o1667:20210601115629p:plain

wp_db_volumeという名前でボリュームが作成されています。
※こちらについても別記事で取り上げようと思います。

f:id:guri2o1667:20210601115607p:plain

7.ネットワーク状態を確認します。

f:id:guri2o1667:20210601115732p:plain

wp_wpnetという名前でbridgeネットワークが作成されています。
※こちらについても下記を参照ください。

www.guri2o1667.work

 



8.Wordpress にアクセスできることを確認します。

f:id:guri2o1667:20210601115935p:plain

■補足1:docker-composeコマンド後の起動確認

以下コマンドで確認することができます。

f:id:guri2o1667:20210601120206p:plain

■補足2:docker-compose upコマンドで生成した環境を停止/削除する

docker-compose up コマンドで生成した環境は、docker-compose down コマンドで停止/削除できます。
尚、停止だけを実施することはできず、削除(廃棄)まで実行されてしまいます。

f:id:guri2o1667:20210601120645p:plain

f:id:guri2o1667:20210601120741p:plain

docker-compose downにオプションを付けない限り、ボリュームは削除されません。

以上です。