docker下PHP+Nginx+HHVM运行环境

Dockerfile

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

FROM    centos:centos6
MAINTAINER Mike Ebinum, [email protected]

使用 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, [email protected]
# 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"]

时间: 2024-10-23 11:35:00

docker下PHP+Nginx+HHVM运行环境的相关文章

Windows下搭建Nginx+PHP运行环境

1.解压安装PHP,并修改php.ini文件 cgi.fix_pathinfo = 1 2.以CGI方式启动PHP php-cgi.exe -b 127.0.0.1:9000 -c php.ini 3.解压安装Nginx,并修改conf/nginx.conf文件 location / {     root   html;     index  index.php index.html index.htm; } location ~ \.php$ {     root    html;     f

在Docker下部署Nginx

在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_pass将HTTP请求反向代理到nodejs Web App 设置HTTPS 如果你还没有安装Docker环境,可参考在Docker中运行Node.js的Web应用. 最简单的命令,让Nginx跑起来 命令如下: 1 $ sudo docker run -it -p 80:80 dockerfile/

在Docker下搭建Apache+PHP+mysql环境的过程记录

在Docker下搭建Apache+PHP+mysql环境的过程记录 这是一篇搭建Docker环境的过程记录,方便以后查看.主要记录了搭建所用到的工具,使用的命令和遇到的坑. 1. 安装Docker 第一步肯定是到Docker的官网(https://www.docker.com)上去下载安装包,目前有CE和EE两个版本,简单来说,CE就是免费版,EE就是收费版.因为我用的是Windows系统,这里就只讲在Windows系统上怎么安装. 也可以点这里直接下载Windows版.下好之后运行安装. 因为

vue部署docker下的nginx刷新404问题及解决方案

环境描述 本次环境是通过jenkins编译npm run build 或者UMI_ENV=dev umi build 生成dist目录通过Dockerfile build一个新镜像上传私服通过swarm集群service运行镜像,使用与swarm一个net下的nginx代理访问的. [[email protected] DEV-sk_platform_brand_common]# cat DockerfileFROM basic-registry.xxxx.com/skong/nginx###继

Docker手动构建 nginx+py3+uwsgi环境

前述 这里使用的阿里云服务器部署,云服务器ssh登陆成功后,如果几分钟没有操作的话,sshd会自动断开登陆,对于我们来说,在部署软件有时要等很久,经常会发生ssh断开的情况,又或是上个侧所回来ssh就断开了,非常头痛. 这里我们要先解决ssh断开连接的问题 # egrep ^Client /etc/ssh/sshd_configClientAliveInterval 15 --间隔多少秒发送一次心跳ClientAliveCountMax 1800 --多少秒没有数据产生时断开连接 部署py3+u

Ubuntu下安装 Ruby, Rails 运行环境

说明: 在安装之前我做了:1.更新软件源,详细指导在这里: 2.更新系统:sudo apt-get update && sudo apt-get upgrade; 3.安装fcitx,安装sogou输入法: 4.打字不方便,禁用触摸板:sh TouchPad.sh off 接着就开始安装了!这里说明一下,后面的可能有几步可能是多余的,怕出错,就没有说去更正简化. 参考资料来自:边晓宇@CSDN 和 ruby-china.org如何快速正确的安装 Ruby, Rails 运行环境 操作系统U

windows 7搭建基于docker的nginx, php运行环境

包含的软件: nginx php(可选php 5.*或php 7.*) phpredis扩展(php5.*安装小于2.2.8的版本 php7.*安装>=3.0的版本) 基础软件环境 Windows 7 Docker Toolbox(自带了VitrualBox虚拟机软件) 注意:因为Win10有Docker特别版,此环境只适用于Win7 安装步骤简要说明 安装好Docker Toolbox,VitrualBox后 关闭VitrualBox虚拟机default 设置虚拟机default的共享文件夹,

CentOS下搭建Nginx+PHP+MYSQL环境

之前弄了个云主机玩,装了个CentOS,然后搭建了一个Nginx+PHP+MYSQL的环境,按照网上的各种教程安装下来还是遇到了一下小问题,于是我对安装过程做了下整理,然后记录成本文. 1.安装CentOS 这个嘛,我选的这个IDC提供了几种操作系统选择,其中就有CentOS,云主机后台点几下鼠标就OK了,然后SSH连接上去进行其他软件的安装. 2.安装所需的库文件和编译环境 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel li

linux下安装nginx+php+mysql环境 详细教程

话不多说上代码 linux环境:centos 7.0 64位 nginx:nginx-1.8.0.tar.gz php: php-7.1.1.tar.gz mysql: mysql-5.6.21.tar.gz libxml2:libxml2-2.9.1.tar.gz openssl:openssl-1.0.1e.tar.gz zlib:zlib-1.2.3.tar.gz pcre:pcre-8.36.tar.gz 这里所需的压缩包 我已经下载好,并且亲测可用 链接:https://pan.bai