Google Container Engineに移行した その3

Gke

ひきつづきGoogle Container Engine(GKE)でWordPress + Nginx + PHP-FPMを動かすの第三弾です。

今度はPHP-FPMのコンテナを作る

前回はNginxのコンテナを作成するDockerfileを作成しました。

Google Container Engineに移行した その2 | A-tak-dot-com

前回の記事を少し直しています。GKEのFluentdがログを拾えるようにするために標準出力にNginxのログを出力するようにしているので、前の会を既に見られている方も、もう一度チェックしてみてくださいね。

さて、さっそくですが、PHP-FPMのコンテナを作るDockerfileはこんな感じです。

[bash]
# PHP-FPMコンテナを構築するDockerfile

FROM centos
MAINTAINER A-tak

#時間表示設定
RUN cp -f /usr/share/zoneinfo/Japan /etc/localtime

#PHP-FPMインストール
RUN su –
RUN yum -y install mariadb
RUN yum -y install php
RUN yum -y install php-gd
RUN yum -y install php-mysql
RUN yum -y install php-mbstring
RUN yum -y install php-fpm

#Webのコンテンツの場所用ディレクトリ
RUN mkdir /var/contents/

#PHP アップロードサイズ上限50Mにアップ
RUN sed -i".org" -e "s/upload_max_filesize = 2M/upload_max_filesize = 50M/g" /etc/php.ini

#PHP-FPM 最大子プロセス数指定
RUN sed -i".org" -e "s/pm.max_children = 50/pm.max_children = 18/g" /etc/php-fpm.d/www.conf

RUN sed -i".org" -e "s/pm.max_spare_servers = 35/pm.max_spare_servers = 18/g" /etc/php-fpm.d/www.conf

#PHP-FPM 500回リクエストで再起動
RUN sed -i".org" -e "s/;pm.max_requests = 500/pm.max_requests = 500/g" /etc/php-fpm.d/www.conf

#ログを標準出力に出してGoogle Cloud Logで拾えるようにする
RUN ln -sf /dev/stderr /var/log/php-fpm/error.log
RUN ln -sf /dev/stderr /var/log/php-fpm/www-error.log

#ポート開放
EXPOSE 9000

#PHP-FPM起動
ENTRYPOINT ["php-fpm","-F"]
[/bash]

今回もcentosの公式イメージをベースにPHP-FPMをインストールしています。基本はyumで必要なアプリをインストールして行っています。

「/var/contents」をnfsのマウントポイントにするので空のディレクトリを作っています。ちなみに前回説明しそびれましたがコンテンツは「/var/contents/a-tak.com/html」配下に置くつもりです。

その後は「sed」コマンドで標準のphp-fpmの設定を書き換えて行っています。前回のように設定ファイル丸ごと用意してコピーしてもいいんですけどね。

設定している内容はコメントに書いているとおりで、アップロードのサイズ変えたり、php-fpmの子プロセス数を変更しています。子プロセスの数はVMのメモリに合わせて最大値を設定すべきなんですが、いまいちコンテナ仮想化の場合のメモリの扱いがよくわからない。

php-fpmのコンテナもエラーを標準エラー出力に出すことでFluentdで拾えるようにしています。

Nginxのコンテナからアクセスできるように「EXPOSE」でポートを開放しています。

作成したDockerfileをビルドします。前回とほぼ同じ手順です。

[bash]
#作業ディレクトリ
dockerwork=/Users/a-tak/Dropbox/docker

#プロジェクトID
projectid=my-project999

docker build -t asia.gcr.io/${projectid}/php-fpm:v1 ${dockerwork}/php-fpm

[/bash]

今回も決まったルールでタグをつけます。php-fpmという名前にしました。v1となってますが、これは新しいイメージを作る度にカウントアップしてください。

[bash]
gcloud docker push asia.gcr.io/${projectid}/php-fpm:v1
[/bash]

これまた前回と同様にGoogleのリポジトリにアップします。自分のプロジェクト専用で他には公開されません。お利口な事に二回目以降は差分がアップロードされるためアップロード時間が短縮されます。

次回からはKubernetesの設定をしてコンテナを実際に起動してみます。

Google Container Engineに移行した その4 | A-tak-dot-com

広告の下にお勧め記事あります!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください