概要
Docker Compose を使って、Web+DB の環境を作成する例です。
Web サーバは、DockerHub の PHP イメージ (https://hub.docker.com/_/php/)、 DB は MySQL を使います。
結局ボツにしたのですが、せっかくなので構築したところまでをメモにしておきます。
最後まで構築したパターンは PHPイメージではなく CentOS7イメージを使用しましたのでご参考まで。
Docker Compose での Web/DB 環境構築例
設定
下記は、docker-compose.yml の Web サーバ部分です。
内容については、Docker Compose での Web/DB 環境構築例 とかぶるので省略。
apache-php: container_name: memo_apache_php build: ./apache-php image: memo_apache_php restart: always ports: - "8080:80" volumes: - ./html:/var/www/html depends_on: - mysql
DB は、Docker Compose で MySQLを構築 とほぼ同じ。
下記は、apache-php/Dockerfile の内容です。
FROM php:7.3-apache RUN apt-get update \ && apt-get upgrade -y sendmail \ && a2enmod rewrite \ && docker-php-ext-install pdo_mysql mysqli mbstring COPY conf/php.ini-production "$PHP_INI_DIR/php.ini" COPY mail_config.sh /tmp RUN chmod +x /tmp/mail_config.sh CMD /tmp/mail_config.sh && apache2-foreground
以下、解説です。
FROM php:7.3-apache
PHP7.3 が使いたかったのでこうしました。
Apache をチョイスしましたが、Apache 以外の Web サーバもあるので、好みの構成をチョイスできます。
RUN apt-get update \ && apt-get upgrade -y sendmail \ && a2enmod rewrite \ && docker-php-ext-install pdo_mysql mysqli mbstring
まず、パッケージのアップデートを行います。
メール送信したいので、sendmail をインストールします。
mod_rewrite を使いたいため、a2enmod rewrite を実行します。Debian 系ではこうやるらしい。。。
docker-php-ext-install を使って、必要な PHP モジュールをインストールしています。
COPY conf/php.ini-production "$PHP_INI_DIR/php.ini"
PHP の設定ファイルをイメージに配置します。
conf/php.ini-production をあらかじめ作成しておく必要があります。
ひな形は、https://hub.docker.com/_/php/ に development と production のパターンが置いてあるので使うことができます。
COPY mail_config.sh /tmp RUN chmod +x /tmp/mail_config.sh CMD /tmp/mail_config.sh && apache2-foreground
sendmail の設定です。
下記のような mail_config.sh を作成し、イメージ作成時に実行します。
mail_config.sh は https://qiita.com/toshi-click/items/196781f4cd163ec83a94 を参考にしました。
#!/bin/sh host=$(hostname) line=$(cat /etc/hosts |grep [1]27.0.0.1) echo "$line localhost localhost.localdomain $host" >> /etc/hosts echo "$host" >> /etc/mail/relay-domains m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf sendmail -bd
最後は、apache2-foreground を実行して終わるようにします。
ボツにした理由
ボツにした理由は、、、、DockerHub の PHP イメージは Debian をベースにして作られており、カスタマイズする際に Debian の知識が必要だったためです。
自分は Debian はあまり使ってこなかったので(/_\*)
WordPress を単に動かすだけならこれで十分だったのですが、その他いろいろとカスタマイズしようとすると、Debian の知識が必要になってきてしまって面倒なので、CentOS7 で作り直しました(/_\*)
ちなみに、DockerHub の PHP イメージの中では CentOS 系のものは無さそうだったのと、公式イメージ以外で良さげな PHP イメージを探してみたのですがなかなか見つからず、探すのに時間がかかるくらいならいっそのこと CentOS7 のイメージでいいじゃないか、、、、ということで構築したのが下記になります(^_^;)
Docker Compose での Web/DB 環境構築例
コメント