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

docker php示例,Docker 编程语言之 PHP相关推荐

  1. docker php示例,Docker PHP 例子

    docker可以执行任何应用程序.本章我们将创建一个Php应用,并使用docker运行它. 1. 创建项目目录 我们会把这个项目的相关文件,集中放到一个目录docker-php: [root@qike ...

  2. 安装MySQL示例   docker pull mysql

    安装MySQL示例   docker pull mysql 错误的启动   docker run --name mysql01 -d mysql 正确的启动 docker run --name mys ...

  3. docker file 示例

    报错 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 这个错误只要输入docker -d ...

  4. Docker操作命令示例

    文章目录 1. 镜像 1.1 获取镜像 1.2 查看镜像信息 1.3 添加镜像标签 1.4 查看镜像详细信息 1.5 搜寻镜像 1.6 删除镜像 1.7 上传镜像 2. 容器 2.1 创建容器 2.2 ...

  5. Docker学习(四)-----Docker容器常用命令

    七.Docker容器 容器是Docker核心概念 简单的说,容器是独立运行的一个或一组应用,以及它们的运行环境 对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和运行 ...

  6. Docker核心技术之Docker Compose

    一.Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的 ...

  7. Kubernetes学习笔记三:Docker安装,Docker使用,编写Dockerfile,制作容器镜像,上传docker镜像

    文章目录 Docker的安装 Docker的使用:docker run命令 查看本地存在的镜像:docker images命令 编写Dockerfile,制作容器镜像 docker build制作镜像 ...

  8. Docker(七):Docker build 、Docker Dockerfile 详解

    什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docker ...

  9. docker 嵌套技术 docker outside of docker 可用于一个容器内调用另一个容器内程序 跨容器调用 docker容器内获取自身容器信息

    环境:centos7  docker升级为最新版, docker升级方法参考:<centos7 docker升级到最新稳定版本>centos7 docker升级到最新稳定版本_whatda ...

  10. Docker(四):Docker 三剑客之 Docker Compose

    前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...

最新文章

  1. 吴恩达的公司,发布了一款社交距离警告工具
  2. Gridview Master/Detail JS
  3. C++求n个字符的长度为m的组合
  4. ie8.0 不能用document.all兼容IE7模式
  5. 使用register_chrdev注册字符设备
  6. Windows XP系统安装SQL Server 2005(开发版)图解
  7. 大大大大数怎么求余?C语言
  8. 小白如何学3D建模?从零开始变大神,学习记录手册(必备)
  9. 面向对象有哪几种常用的设计模式,六大设计原则是什么
  10. 做实体行业现在难吗?
  11. 【zepto学习笔记02】零碎点
  12. 拓端tecdat|基于数据挖掘SVM模型的pre-incident事故预防预测分析报告
  13. vscode插件Todo Tree配置
  14. 第四章第三题(几何:估算面积)(Geography: estimate areas)
  15. Android补间动画之旋转动画
  16. 图的表示(无权图和有权图)
  17. JAVA:实现线性丢番图方程求解器算法(附完整源码)
  18. linux进程cpu时间片,Linux性能监控之CPU篇
  19. 1-2 二十四点 (20 分)【Csp认证真题】
  20. reddits股票线程成为华尔街必读的内容

热门文章

  1. iOS蓝牙4.0基础开发
  2. 现实世界的Windows Azure:采访Transparencia Sp. z o.o的Grzegorz Skowron-Moszkowicz
  3. mysql 主从机器 触发器 的测试,完全正常 没有问题
  4. excel_applications
  5. Windows 下 git的安装 + 可视化的小乌龟的安装
  6. Google发布Java 核心工具库——Guava 28.0
  7. Python使用matplotlib可视化模拟家庭支出情况雷达图
  8. 为什么家里pm25比外面高_你绝对不会相信在家用卷发棒烫发竟然比在外面烫发更伤发?...
  9. 判断是否是完全二叉树_二叉树:我对称么?
  10. c# 如何获取项目的根目录