在docker镜像库里找不到合适的httpd+php环境,故本文旨在自己建立一个合自己心意的httpd+php环境docker镜像。本人在Docker Hub上也发布了基于CentOS 7的httpd+PHP环境镜像,可直接通过命令docker pull xiaojunyi/httpd-php获取使用。

1 获取httpd环境docker镜像

由于本人对CentOS环境比较熟悉,故不使用docker官方的httpd镜像,使用centos的httpd镜像:

$ sudo docker pull centos/httpd

2 创建并启动容器

  • 创建两个文件夹用于放置前后端代码和httpd日志:
$ sudo mkdir -p /docker/httpd/html
$ sudo mkdir -p /docker/httpd/logs
  • 生成容器:
$ sudo docker run --name httpd -d --restart always -p 80:80 -p 443:443 -v /docker/httpd/html:/var/www/html -v /docker/httpd/logs:/etc/httpd/logs centos/httpd

其中,--name httpd:容器指定名称为mysql;-d:后台运行容器,并返回容器ID;--restart always:在容器退出时总是重启容器;-p 80:80 -p 443:443:将宿主机的80、443端口(前者)分别映射到容器的80、443端口(后者);-v /docker/httpd/html:/var/www/html:将宿主机的目录/docker/httpd/html映射到容器的目录/var/www/html,用于存放前后端代码文件;-v /docker/httpd/logs:/etc/httpd/logs:将宿主机的目录/docker/httpd/logs映射到容器的目录/etc/httpd/logs,用于存放httpd产生的日志文件。
此时在浏览器访问宿主机,即可看到Apache的环境界面,在宿主机目录/docker/httpd/html下部署上前后端的代码,即可访问了。

3 在容器中部署php7.1环境

本人图方便,使用yum来安装php。

  • 由于CentOS官方源的php版本太旧,故先配置yum源:
$ sudo docker exec httpd yum install -y epel-release
$ sudo docker exec httpd rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo docker exec httpd yum update -y
  • 若以后需要自行编译PHP的扩展(如连接redis、mongodb的扩展),则最好安装如下包:
$ sudo docker exec httpd yum install -y gcc make openssl openssl-devel
  • 安装PHP 7.1及常用的扩展:
$ sudo docker exec httpd yum install -y --enablerepo=remi --enablerepo=remi-php71 php php-devel php-mbstring php-mcrypt php-mysqlnd php-pdo php-gd
  • 清理一下yum缓存:
$ sudo docker exec httpd yum clean all
$ sudo docker exec httpd rm -rf /var/cache/yum

4 查看phpinfo

  • 先重启httpd服务,有两种方式:

(1) 直接重启容器(推荐):

$ sudo docker restart httpd

(2) 重启容器的httpd服务:

$ sudo docker exec httpd httpd -k restart
  • 在宿主机目录/docker/httpd/html下新建文件index.php,内容如下:
<?php
    phpinfo();
  • 浏览器访问宿主机,即可看到PHP环境部署成功了:

5 保存容器为镜像

部署完成后,可以将容器创建为镜像,留待以后可以方便地创建httpd+php环境的容器:

$ sudo docker stop httpd
$ sudo docker commit -m "centos httpd+php7.1" httpd httpd-php71:1.0

可以看到有一个新的镜像了:

apache superset docker安装 docker安装httpd_docker


仿照步骤2,即可直接创建一个部署了httpd和php7.1环境的docker容器了:

$ sudo docker run --name httpd-php71 -d --restart always -p 80:80 -p 443:443 -v /docker/httpd/html:/var/www/html -v /docker/httpd/logs:/etc/httpd/logs httpd-php71:1.0