• docker下PHP+Nginx+HHVM运行环境


    Dockerfile

    准备开始,我们创建一个 Dockerfile —— Dockerfile 包含如何创建所需镜像的指令。


    FROM    centos:centos6
    MAINTAINER Mike Ebinum, hello@seedtech.io


    使用 Cent OS 6.x

    告知 Docker 使用官方社区最新版本的 CentOS 6.x 可用镜像。

    更新镜像

    安装所有最新版本的包更新,并且把 Red Hat EPEL 的仓库加入可用的仓库列表。


    RUN yum update -y >/dev/null && yum install -y http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm  && curl -L -o /etc/yum.repos.d/hop5.repo "http://www.hop5.in/yum/el6/hop5.repo"


    安装包

    安装 supervisord —— 我们将使用这个配置和控制运行在容器中的进程 - 、 nginx 、 php 、一些 PHP 的开发包以及 Facebook 的 hhvm 。


    RUN yum install -y python-meld3 http://dl.fedoraproject.org/pub/epel/6/i386/supervisor-2.1-8.el6.noarch.rpm
    RUN ["yum", "-y", "install", "nginx", "php", "php-mysql", "php-devel", "php-gd", "php-pecl-memcache", "php-pspell", "php-snmp", "php-xmlrpc", "php-xml","hhvm"]


    配置 Nginx 、 HHVM 和 Supervisord

    为 nginx 创建目录,并且把 index.php 文件加入 nginx 来展现。


    RUN mkdir -p /var/www/html && chmod a+r /var/www/html && echo "<?php phpinfo(); ?>" > /var/www/html/index.php


    下一组指令是:

    为 HHVM 添加一个配置文件,然后重启我们的 HHVM 服务

    为 Supervisord 添加一个配置文件,然后启动 Nginx 和 HHVM


      ADD config.hdf /etc/hhvm/config.hdf
      RUN service hhvm restart
      ADD nginx.conf /etc/nginx/conf.d/default.conf
      ADD supervisord.conf /etc/supervisord.conf
      RUN chkconfig supervisord on && chkconfig nginx on


    添加一个 shell 脚本 /run.sh ,在 Docker 容器运行时启动。

    run.sh


    #!/bin/bash
    set -e -x
    echo "starting supervisor in foreground"
    supervisord -n



     ADD scripts/run.sh /run.sh
     RUN chmod a+x /run.sh
     EXPOSE 22 80
     ENTRYPOINT ["/run.sh"]


    构建容器,并且打 tag


    docker build -t centos-nginx-php5-hhvm .


    现在我们有一个全功能的容器,我们可以像下面这样运行:


    docker run -d -p 80:80 centos-nginx-php5-hhvm


    如果你已经有本地的服务已经在运行并且占用了 80 端口,你能很容易的的改变容器的对外端口。

    docker registry 提供这个 Docker 镜像的可用版本。

    Dockerfile

    完整的 Dockerfile 如下


    # DOCKER-VERSION 1.0.0
    FROM    centos:centos6
    MAINTAINER Mike Ebinum, hello@seedtech.io
    # Install dependencies for HHVM
    # yum update -y >/dev/null &&
    RUN yum install -y http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm  && curl -L -o /etc/yum.repos.d/hop5.repo "http://www.hop5.in/yum/el6/hop5.repo"
    # Install supervisor
    RUN yum install -y python-meld3 http://dl.fedoraproject.org/pub/epel/6/i386/supervisor-2.1-8.el6.noarch.rpm
    #install nginx, php, mysql, hhvm
    RUN ["yum", "-y", "install", "nginx", "php", "php-mysql", "php-devel", "php-gd", "php-pecl-memcache", "php-pspell", "php-snmp", "php-xmlrpc", "php-xml","hhvm"]
    # Create folder for server and add index.php file to for nginx
    RUN mkdir -p /var/www/html && chmod a+r /var/www/html && echo "<?php phpinfo(); ?>" > /var/www/html/index.php
    #Setup hhvm - add config for hhvm
    ADD config.hdf /etc/hhvm/config.hdf
    RUN service hhvm restart
    # ADD Nginx config
    ADD nginx.conf /etc/nginx/conf.d/default.conf
    # ADD supervisord config with hhvm setup
    ADD supervisord.conf /etc/supervisord.conf
    #set to start automatically - supervisord, nginx and mysql
    RUN chkconfig supervisord on && chkconfig nginx on
    ADD scripts/run.sh /run.sh
    RUN chmod a+x /run.sh
    EXPOSE 22 80
    #Start supervisord (which will start hhvm), nginx
    ENTRYPOINT ["/run.sh"]

  • 相关阅读:
    jqueryeasyui中创建复杂布局
    内表查询用到外表
    某人对为什么不搞.net,不搞web的原因
    眼睛痛的一些原因
    控件包含代码块(即 <% ... %>),因此无法修改控件集合(用户自定义控件中)
    明天留着看
    SqlServer 数据归档
    从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
    生成sql 脚本没有索引
    sqlserver 时间间隔
  • 原文地址:https://www.cnblogs.com/yuqiandoudou/p/4674105.html
Copyright © 2020-2023  润新知