PHP 是一种广泛使用的动态脚本语言,尤其适用于各种 Web方案。PHP 的哲学是quickand dirty(快速有效为先)。
下面介绍PHP语言的Docker 环境,并简述PHP主流MVC框架的Docker环境。
1.使用官方镜像
下载PHP官方基础镜像。
sudo docker pull php 下载成功后,可以使用一个PHP容器去运行PHP 程序/站点。
简单运行,用以下命令直接运行PHP 脚本:
# sudo 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
2. 定制镜像
第一歩,下载镜像安装
下载PHP 官方基础镜像:# sudo docker pull php下载完成后,使用docker images 查看PHP 基础镜像是否安装完成:# sudo docker images
第二步, 在Docker 中运行一条PHP 命令(CLI):
# sudo docker run -it docker/php可见 CLI 直接输出# sudo docker run -it php echo 'hello docker!'第三步,在Docker 中运行一段PHP 代码: 首先,读者需要确定当前目录位置,使用pwd命令,创建一个sample 目录:# pwd/home/core# mkdir sample# cd sample
创建PHP文件,内容如下:
<?phpclass demo{ function_construct(){ echo 'Building Object,'; echo "\n"; } function hello_wold(){ print 'Hello World!'; } } $demo_object = new demo(); $demo_object->hello_world();?>
下面基于sshd 镜像,构建一个能方便运行PHP业务代码(非单个PHP CLI 命令)的镜像:
FROM sshd:dockerfile# 安装基础镜像ENV DEBIAN_FRONTEND noninteractive RUN apt-get update &&\ apt-get-yq install\ curl\ apach2\ libapache2-mod-ph5\ php5-mysql\ php5-gd\ php5-curl\ php-pear\ php-apc &&\ rm -rf/var/lib/apt/lists/* RUN sed -i "s/Variables_order.*/variables_order = \"EGPCS\"/g" /etc/php5/apache2/php.ini RUN curl -sS https://getcomposer.org/installer /php -- --install-dir=/usr/local/bin --filename=composer RUN echo "Asia/Shanghai" >/etc/timezone &&\ dpkg-reconfigure -f noninteractive tzdata# 添加脚本,并设置权限ADD run.sh /run.sh RUN chmod 755 /*.sh# 添加一个示例php站点RUN mkdir -p /var/lock/apache2 &&mkdir -p /app &&rm -fr /var/www/html && ln -s /app/var/www/html COPY sample/ /app# 设置apache相关的一些变量,在容器启动的时候可以使用-e 参数替代ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_PID_FILE /var/run/apache2.pid ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV_APACHE_SERVERADMIN admin@localhost ENV APACHE_SERVERNAME localhost ENV APACHE_SERVERALIAS docker.localhost ENV APACHE_DOCUMENTROOT /var/www# 使用 80 端口EXPOSE 80 WORKDIR /app CMD ["/run.sh"]
run.sh 文件内容如下:
#!/bin/bash/usr/sbin/sshd -D & chown www-data:www-data /app -Rsource /etc/apache2/envvarsexec apache2 -D FOREGROUND
然后,构建此镜像:
# sudo docker build -t my-php:dockerfile .构建成功后,运行镜像:# sudo docker run -d -P php查看是否启动成功:# sudo docker ps使用 49160 端口可以打开 php 页面,使用49159 端口可以打开ssh 服务(端口号在docker ps 里查看)# curl 127.0.0.1:39160/demo.php也可以通过浏览器访问 http://宿主主机IP:49160 来访问我们的示例程序。
作者:刘远鑫
链接:https://www.jianshu.com/p/b8354d501bd0