在docker镜像库里找不到合适的httpd+php环境,故本文旨在自己建立一个合自己心意的httpd+php环境docker镜像。本人在Docker Hub上也发布了基于CentOS 7的httpd+PHP环境镜像,可直接通过命令docker pull xiaojunyi/httpd-php
获取使用。
由于本人对CentOS环境比较熟悉,故不使用docker官方的httpd镜像,使用centos的httpd镜像:
$ sudo docker pull centos/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
下部署上前后端的代码,即可访问了。
本人图方便,使用yum来安装php。
$ 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
$ sudo docker exec httpd yum install -y gcc make openssl openssl-devel
$ 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
$ sudo docker exec httpd yum clean all
$ sudo docker exec httpd rm -rf /var/cache/yum
(1) 直接重启容器(推荐):
$ sudo docker restart httpd
(2) 重启容器的httpd服务:
$ sudo docker exec httpd httpd -k restart
/docker/httpd/html
下新建文件index.php
,内容如下:
phpinfo();
部署完成后,可以将容器创建为镜像,留待以后可以方便地创建httpd+php环境的容器:
$ sudo docker stop httpd
$ sudo docker commit -m "centos httpd+php7.1" httpd httpd-php71:1.0
可以看到有一个新的镜像了:
仿照步骤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