目前 Docker 部署算是比较流行的方式,在传统方式搭建生产环境时候我们需要人工进行编译,我们可以利用 Docker 来简化这一步操作,直接拉取官方镜像。
$ docker pull php:7.2-cli
$ docker image list | grep php
php 7.2-cli dfdb1713d26a 23 months ago 365MB
这个镜像对于值运行 cli 程序来说镜像镜像有些太大了,镜像大就涉及到了拉取时间慢,而且占用磁盘资源,我们也可以选择 alpine
的版本,这是一个专门面向 docker 封装的精简版 Linux,其镜像要更小一些。
$ docker pull php:7.2-cli-alpine3.6
$ docker image list | grep php
php 7.2-cli dfdb1713d26a 23 months ago 365MB
php 7.2-cli-alpine3.6 27bfb4b1f223 4 years ago 74.1MB
alpine 版本的 php-cli 总大小才 74.1MB。
接下来,我们来看一下该镜像中为我们打包好的 PHP 是否足以运行我们的 PHP 程序,最主要的就是看都安装了那些扩展。
$ docker run -it --rm php:7.2-cli-alpine3.6 php -m
该命令的意义如下:

[PHP Modules]
...
Core
ctype
curl
date
dom
fileinfo
....
[Zend Modules]
如果其扩展不足以支持我们的应用运行,我们可以选择基于官方的 Dockerfile 进行定制,同时如果将要基于当前镜像进行定制的话也可以编写自己的 Dockerfile。
接下来,利用该进行来执行我们的第一个应用程序。
$ cat /home/maksim/index.php
<?php
echo "Hello Docker!";
$ docker run -it --rm --name runphp -v /home/maksim/index.php:/usr/src/index.php php:7.2-cli-alpine3.6 php /usr/src/index.php
Hello Docker!%
这样 PHP 的 Cli 程序就可以运行了。