Dockerは環境の再現性が強みというわけで、今回はDocker For WindowsとDocker for Macの両方で試しました。
たぶんLinux環境下ではMac(bash)と同じです。
環境
Windows (PowerShell)
> [System.Environment]::OSVersion
Platform ServicePack Version VersionString
-------- ----------- ------- -------------
Win32NT 10.0.16299.0 Microsoft Windows NT 10.0.16299.0
> docker --version
Docker version 17.09.0-ce, build afdb6d4
Mac(bash)
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G31
$ docker --version
Docker version 17.06.2-ce, build cec0b72
構築
まずDockerfile を用意します。
FROM php:7.2-rc
WORKDIR /root
次にビルドします。
> docker build . --tag example_php_72rc
これで完成です。お疲れ様でした。
確認
イメージができているか確認します。
> docker images | Select-String example_php_72rc
example_php_72rc latest 474bd1d2c30a 3 minutes ago 354MB
なお、Windows PowerShellにおけるSelect-String
は、Mac/Linuxなら grep
を使います。
$ docker images | grep example_php_72rc
example_php_72rc latest 75a229bbc39e About a minute ago 354MB
いずれも、イメージができていることが確認できました。
php --version
や php --run 'echo phpinfo();'
を使ってPHPのバージョンを確認します。
> docker run --rm example_php_72rc php --version
PHP 7.2.0RC4 (cli) (built: Oct 12 2017 22:09:58) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0-dev, Copyright (c) 1998-2017 Zend Technologies
$ docker run --rm example_php_72rc php --run 'echo phpinfo();' | grep 'PHP Version'
PHP Version => 7.2.0RC4
PHP Version => 7.2.0RC4
RC版7.2になっていることがわかります。
実行
ボリュームをマウントすれば、ファイルを実行できます。
index.phpを作成し、実行してみます。
<?php
echo 'Hello, PHP7.2!';
Windows
> docker run --volume "$(pwd):/root" --rm example_php_72rc php index.php
Hello, PHP7.2!
Mac
$ docker run --volume `pwd`:/root --rm example_php_72rc php index.php
Hello, PHP7.2!
LAMP等でWebサーバにするためにはもう少し手順を踏まないといけないのですが、ただプログラムを動かすだけならばここまで簡単に環境を用意することができます。