KUSANAGI RoDの使い方(3)(Dockerコラム)

KUSANAGI RoDの使い方(3)(Dockerコラム)
Bookmark this on Hatena Bookmark

前回は、KUSANAGI RoD(以下RoD)で環境を生成するためのオプションについて説明しました。今回は、プロビジョン後に生成されるターゲットディレクトリ以下のファイルについて説明しようと思います。

provisionで生成したファイル

RoDでWordPressをプロビジョンした場合、ターゲットディレクトリ以下に、ファイル・ディレクトリが生成されます。

  • docker-compose.yml
    RoD環境でのdocker-compose の設定ファイルです
  • .git/、.gitignore
  • Git管理用ディレクトリおよびファイルです
  • ターゲットディレクトリ以下のファイルはすべてGit管理対象です
  • 環境設定ファイル
    docker-compose.yml で使用する環境変数をファイル内に格納します
  • .kusanagi
  • .kusanagi.db
  • .kusanagi.httpd
  • .kusanagi.mail
  • .kusanagi.mysql
  • .kusanagi.php
  • .kusanagi.wp
  • contents/
    コンテナボリューム内にある、/home/kusanagi/ターゲット名/ ディレクトリの中身をコピーしたものです
  • wpcli/
    wpcli 用のDockerイメージ作成用ディレクトリです
    WordPressをプロビジョニングしたときに作成されます

docker-compose.yml

docker-compose.yml の内容は以下のとおりです。

networks

bridgeとして1つのネットワークを作成します

   version: '3'

   networks:
     default:
       driver: bridge
       driver_opts:
         com.docker.network.driver.mtu: 9000
         com.docker.network.enable_ipv6: "true"
  • ネットワークを少しでも高速にするため、MTUを9000としています
  • このネットワークではIPv6をサポートします

volumes

パーシスタンスボリューム(PV)の定義です。

   volumes:
     kusanagi:
     database:
  • /home/kusanagi 用と、データベーステーブル用のPVを用意しています
  • この文はファイルの末尾に配置しています

httpd

httpd のサービスです。

   services:
     httpd:
       container_name: wordpress_httpd
       image: primestrategy/kusanagi-nginx:1.17.6-r0
       restart: always
       env_file:
         - .kusanagi
         - .kusanagi.httpd
       volumes:
         - kusanagi:/home/kusanagi
         - kusanagi:/etc/letsencrypt
         - kusanagi:/var/www/html/.well-known
       ports:
         - "80:8080"
         - "443:8443"
       extra_hosts:
         - "a300.gpm.local:127.0.0.1"
  • プロビジョン時のオプションで、nginx/httpdから指定した際のイメージが設定されます
  • nginx/httpdイメージの内部使用ポートは8080と8443で、プロビジョン時に指定したポートからポートフォワードします
  • /home/kusanagi およびcertbot用のディレクトリをPVとし、kusanagiボリュームを使用します

certbot

certbot により、let’s encrypt からSSL鍵を取得するサービスですが、現在は実験中の状態です。

     certbot:
       container_name: wordpress_certbot
       image: certbot/certbot:v1.0.0
       restart: always
       network_mode: "service:httpd"
       env_file:
         - .kusanagi.httpd
       volumes:
         - kusanagi:/var/www/html/.well-known
         - kusanagi:/etc/letsencrypt
       command:
         - --version

config

コンテナ内ファイル・DBへの操作を行うサービスです。
WordPressとそれ以外では作成する内容が異なります。

   ## CONFIG
     config:
       container_name: wordpress_config
       restart: always
       build:
           context: ./wpcli
       user: "1000:1001"
       env_file:
         - .kusanagi
         - .kusanagi.wp
         - .kusanagi.db
       volumes:
         - database:/var/run/mysqld
         - kusanagi:/home/kusanagi
       command: wp --version
  • WordPress用は、wpcli ディレクトリでビルドしたイメージを使用します
  • wpcliイメージはWordPressの正式イメージである wordpress:cli をベースにしてるため、wpコマンドが使用可能です
  • socketファイルの位置をDBサービスに合わせて、/var/run/mysqld/mysqld.sock としてあります
   ## CONFIG
     config:
       container_name: lamp_config
       image: primestrategy/kusanagi-config:1.0.1-r0
       restart: always
       user: "1000:1001"
       env_file:
         - .kusanagi
         - .kusanagi.db
       volumes:
         - database:/var/run/mysqld
         - kusanagi:/home/kusanagi
  • WordPress以外は、kusanagi-config を使用します

php

php-fpmのサービスです。

     php:
       container_name: wordpress_php
       image: primestrategy/kusanagi-php:7.3.12-r0
       restart: always
       env_file:
         - .kusanagi
         - .kusanagi.php
         - .kusanagi.mail
       network_mode: "service:httpd"
       volumes:
         - database:/var/run/mysqld
         - kusanagi:/home/kusanagi
  • httpdと同じネットワークに接続し、コンテナ外からの接続を行いません
  • /home/kusanagi およびDB用のディレクトリをPVとし、kusanagi、databaseボリュームを使用します
  • databaseボリュームを使用するのは、DBのUNIX socketを使用して通信するためです

DB

データベースサービスです。

   ## MYSQL 
     db:
       container_name: wordpress_db
       image: mariadb:10.4.11-bionic
       restart: always
       user: "999:999"
       env_file:
         - .kusanagi.mysql
       network_mode: "service:httpd"
       volumes:
         - database:/var/run/mysqld
         - database:/var/lib/mysql
  • DB用のディレクトリをPVとし、databaseボリュームを使用します
  • プロビジョン時に選択肢たオプションにより、mariadb もしくは postgresql のどちらかを使用します
  • httpd のネットワークに接続していますが、DB接続にUNIX Socketを使用する場合は不要です

ftp

WordPressのときのみ使用されるftpサービスです

   ## FTPD
     ftp:
       container_name: wordpress_ftp
       image: primestrategy/kusanagi-ftpd:1.0.2-r0
       restart: always
       network_mode: "service:httpd"
       env_file:
         - .kusanagi
         - .kusanagi.wp
       volumes:
         - kusanagi:/home/kusanagi
  • httpdと同じネットワークに接続し、コンテナ外からの接続を行いません
  • /home/kusanagi をPVとし、kusanagiボリュームを使用します

終わりに

今回は、プロビジョン後に生成されるターゲットディレクトリ以下のファイルについて説明しました。次回は、今回説明できなかった環境設定ファイルについて説明しようと思います。次回をお楽しみに。

訂正とお詫び

前回の記事で以下の間違いがありましたので、修正させていただきます。

言語説明
ja_JP(偽) → ja(真)日本語
Bookmark this on Hatena Bookmark

KUSANAGIカテゴリの最新記事