kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

DockerでPHP実行

Dockerfile

Dockerは仮想環境のため、どんな処理をするのか設定ファイルを作成する必要があります。

設定ファイルが「Dockerfile」です。

書く内容は、元になるイメージと必要になる設定です。

イメージファイル

https://hub.docker.com/_/php/

元になるイメージは必要になる機能ごとに選んでいきます。

今回はPHPを使用したいため、PHPのページをみてどのバージョンを使用するかを決めます。

できれば新しい方がいいので、「7.2.9」の使用をしてみます。

ここでよくわからなかったが「alpine」「jessie」がついているバージョンです。

調べて見たらOS自体の名前がついているみたいですね。

alpinelinux.org

Debian - Wikipedia

自分の利用用途にあったイメージを選択すればいいと思います。

今回のDockerfile

github.com

FROM php:7.2.9-cli
WORKDIR /opt/php
RUN apt-get update \
    && apt-get install -y zlib1g-dev wget git-core \
    && docker-php-ext-install zip

PHPのみ必要なため、cliのイメージを選択しました。アップデートをしておきたいため、アップデート処理も追加します。

PHPの場合、エクステンションの追加が必要になるため、「docker-php-ext-install」にて必要な拡張機能を追加します。

ビルド

Dockerfileを作成して、Dockerfileのある場所でイメージをビルドする。

docker build ./ -t php-7.2.9

「-t」で名前をつけることができる。

ビルドが成功すると、実行可能になる。一覧を確認する場合は、imagesで確認できる。

docker images

実行

docker run php-7.2.9 php -v

これでバージョンが表示されれば、phpが利用できるていることが認識できると思います。

runコマンドでイメージを指定し、つぎに実行するコマンドを入力する感じです。

この状態では実践的ではないため、phpファイルを作成し、試して見たいので

srcフォルダを作成し、そこに実行する内容を記述してみます。

<?php
echo "Hello world! "."\n";

次のコマンドを実行してみます。

docker run --rm --name my-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp php-7.2.9 php src/hello.php

Hello world!」が表示されていることでしょう。

オプションについては以下の通りです。

オプション 内容
--rm コンテナの自動削除
--name コンテナ名の指定
-v "$PWD":/usr/src/myapp ディレクトリのマウント
-w /usr/src/myapp workディレクトリ指定

うん。なんとなく単体ならいける感じがしてきました。

コマンド実行までできた

まず実行できるイメージができればいいな。と思い、いつも使っている言語での使い方で活かせるようにしてみたかったので及第点だとおもいます。

システムについて新しいことをやるときは、個人的にはなにができるかのイメージがあるとないとでは実際に利用できるまでの時間が大分違うと思っているので、いつも使っているサービスでどう活用できるか、から入っていきます。

今回はコンテナとして、サーバーの環境をインストール等しないでもいろいろと試せるようになる。というイメージから、実際にいつも使用している言語のバージョンをいろいろと試してみたい。という要望が満たせそうなイメージがつきました。

簡単にですが、PHP自体だけならこれで使えそうです。

次は、Docker自体は何回か試していたが、なぜかいいイメージまでいかなかった理由。を書いてみようと思っています。

いや、便利だ。