14.6 PHP
PHP(Hypertext Preprocessor,超文本预处理器)是一种通用的开源脚本语言。语法吸收了C、Java和Perl等语言的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

1.使用官方镜像
第一步,在PHP项目的根目录中新建一个Dockerfile:
- FROM php:5.6-cli
- COPY . /usr/src/myapp
- WORKDIR /usr/src/myapp
- CMD [ "php", "./hello.php" ]
新建hello.php文件:
- <?php
- echo "hello php\n"
- ?>
第二步,运行docker build命令构建镜像:
- $ docker build -t php-image .
最后,执行以下命令去运行Docker镜像:
- $ docker run -it --rm --name php-container php-image
- hello php
2.挂载PHP项目
如果读者需要运行简单的,甚至单文件的PHP项目,那么每次都写Dockerfile会很麻烦。这种情况下,可以用以下命令挂载PHP项目:
- $ docker run -it --rm --name my-running-script -v "$(pwd)":/usr/src/myapp -w
- /usr/src/myapp php:5.6-cli php your-script.php
3.配合Apache使用
通常情况下,PHP项目需要和Apache httpd/Nginx一起运行,这样就需要PHP容器中内含Apache Web Server。读者可以使用带有apache标签的镜像,如php:5.6-apache。
第一步,在读者的PHP项目的根目录中新建一个Dockerfile,并使用Docker Hub官方的基础镜像:
- FROM php:5.6-apache
- COPY src/ /var/www/html/
其中,src/是当前包含所有PHP代码的目录。
第二步,使用此Dockerfile构建自定义镜像:
- $ docker build -t my-php-app .
第三步,创建并运行此镜像:
- $ docker run -it --rm --name my-running-app my-php-app
笔者建议添一个自定义的php.ini配置文件,将其拷贝到/usr/local/lib。这样读者可以对PHP项目做更多的定制化,如开启某些PHP插件,或者对PHP解释器进行一些安全/性能相关的配置。添加方法很简单:
- FROM php:5.6-apache
- COPY config/php.ini /usr/local/lib/
- COPY src/ /var/www/html/
提示
src/是当前存放PHP代码的文件夹,config/文件夹包含php.ini文件。
如果读者希望直接使用官方镜像运行PHP项目,可以执行如下命令:
- $ docker run -it --rm --name my-apache-php-app -v "$(pwd)":/var/www/html php:
- 5.6-apache
