DockerでapacheとMemcachedを起動してPHP5.4から接続してみる
はい。前回からPHPのバージョンが下がっただけです。
ですがこういったいまさらバージョンあげらんねーーよ、なシステムのお守りをせねばならない立場の方も多いのではないでしょうか。
Dockerを使えばレガシーなミドルウェアをコンテナに封じ込めつつ、ホスト側は地道にアップデートし守りを固めることも可能です。というかそういったしがらみを抱えたシステムのセキュリティ向上のための唯一解じゃないかと思っています。現実的に考えて。
Compose
内容は前回と変わりません。apache-phpとmemcachedコンテナを立ち上げます。
docker-compose
まずはCompseの設定
docker-compose.yml
apache-php:
build: ./apache-php
ports:
- "80:80"
links:
- memcached
memcached:
image: memcached:1.4
ディレクトリ構成
これも前回と変わりません。
project_dir
+- docker-compose.yml
+-apache-php
+-Dockerfile
+-index.php
php5.4用のDockerfile
ここが違います。peclでインストールできるので、はっきりいってphp7より楽です。 枯れたものの強みですね。
apache-php/Dockerfile
FROM php:5.4-apache
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y libmemcached-dev zlib1g-dev \
&& pecl install memcached \
&& docker-php-ext-enable memcached
検証用のindex.phpも変わらず
index.php
<?php
$m = new Memcached();
$m->addServer('memcached', 11211);
$m->set('int', 99);
$m->set('string', 'a simple string');
$m->set('array', array(11, 12));
/* expire 'object' key in 5 minutes */
$m->set('object', new stdclass, time() + 300);
var_dump($m->get('int'));
echo "<br>";
var_dump($m->get('string'));
echo "<br>";
var_dump($m->get('array'));
echo "<br>";
var_dump($m->get('object'));
echo "<br>";
?>
実行
docker-compose up -d
ブラウザでアクセス
OK!
後始末
docker-compose stop # 全てのコンテナ停止
docker-compose rm # 全てのコンテナ削除
phpのバージョンを変えるのも楽々。
Dockerいいですね〜。