Docker初心者による、初心者のためのDocker入門 #4


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いいですね〜。