继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Docker 编程语言之 PHP

海绵宝宝撒
关注TA
已关注
手记 408
粉丝 40
获赞 124

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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP