Docker 制作Apache+PHP+GD+MongoDB+Redis镜像
来源:互联网 发布:知乎怎么私信匿名用户 编辑:程序博客网 时间:2024/06/05 11:50
标题很长,但其实问题只是『如何在一个干净的Debian系统上安装PHP的运行环境』,对于一个Javaer来说,这才是问题。
所以,我们首先采用了最笨拙的办法,先拉取一个Debian的镜像(debian:latest),然后启动它,并进入/bin/bash。
#docker run -it --name d0 -p 8801:80 -v /home/yancheng:/tmp debian:latest /bin/bash
之所以映射了80,是为了调试PHP方便,可以一边改一边调测。而挂载本地目录,只是为了上传文件(只须将文件放到本地的/home/yancheng下,就可以虚拟机中通过/tmp访问它,便于我方便的得到所需要的软件包)。
使用apt-get install 安装所需要的软件,包括 apache2,php5,php-gd 等等,甚至于vim,curl,gcc,make 等等。
对于像MongoDB和Redis的这一类安装,只能通过源码,可以用curl下载tgz,用tar解开,然后 phpize + configure + make 它们。
当然,中间少不了一些配置的修改,就用vi直接编辑即可。
边学习边研究,折腾好一阵子。直至能访问你的测试页phpinfo,并且看到想要的mod都已安装。
现在,我们可以将容器保存成镜像。
#docker commit 88f3b8b52f84 debian/apache-php:0.0.1
这样,我们就得到一个可用的镜像了,可以这样使用它。
#docker run -it --name web0 -p 8880:80 -v /home/myweb/htdocs:/var/www/html debian/apache-php:0.0.1
嗯,然后你进入了一个/bin/bash环境,需要手动去启动apache2,这样就可以通过8880访问到你的PHP网站了。之后,可以用Ctrl-P + Ctrl-Q 退出容器让它后台持续运行。
如果上面的操作都OK了,说明你也已掌握了制作PHP镜像的正确步骤,现在可以使用Dockerfile来制作一个能达到同样效果但是更精简更优秀的镜像了。
FROM debian:latestRUN apt-get update \ && apt-get install -y apache2 php5 php5-dev php5-gd php5-mysql php5-curl --no-install-recommendsENV PHP_INI_DIR /usr/local/etc/phpRUN rm -rf /var/www/html \ && mkdir -p /var/lock/apache2 /var/run/apache2 /var/log/apache2 /var/www/html \ && chown -R www-data:www-data /var/lock/apache2 /var/run/apache2 /var/log/apache2 /var/www/htmlRUN apt-get install -y autoconf gcc make --no-install-recommendsRUN cd /etc/apache2/mods-enabled \ && ln -s ../mods-available/rewrite.load rewrite.load \ && ln -s ../mods-available/authz_groupfile.load authz_groupfile.load \ && ln -s ../mods-available/reqtimeout.load reqtimeout.load \ && ln -s ../mods-available/reqtimeout.conf reqtimeout.conf \ && ln -s ../mods-available/headers.load headers.loadCOPY mongo-1.6.13.tgz /tmp/mongo-1.6.13.tgzRUN cd /tmp \ && tar zxvf mongo-1.6.13.tgz \ && cd mongo-1.6.13 \ && phpize \ && ./configure \ && make \ && make install \ && mv modules/mongo.so /usr/lib/php5/20131226/mongo.so \ && make cleanCOPY redis-2.2.7.tgz /tmp/redis-2.2.7.tgzRUN cd /tmp \ && tar zxvf redis-2.2.7.tgz \ && cd redis-2.2.7 \ && phpize \ && ./configure \ && make \ && make install \ && mv modules/redis.so /usr/lib/php5/20131226/redis.so \ && make cleanCOPY mongo.ini /etc/php5/apache2/conf.d/mongo.iniCOPY redis.ini /etc/php5/apache2/conf.d/redis.iniRUN mv /etc/apache2/apache2.conf /etc/apache2/apache2.conf.distCOPY apache2.conf /etc/apache2/apache2.confVOLUME ["/var/www/html"]RUN rm -r -f /var/lib/apt/lists/* \ && rm /etc/apache2/conf-enabled/* /etc/apache2/sites-enabled/*COPY apache2-foreground /usr/local/bin/WORKDIR /var/www/htmlEXPOSE 80CMD ["apache2-foreground"]
需要的软件包及配置文件,我放到GitHub上了,地址是:https://github.com/sharetop/docker-debian-apache-php
- Docker 制作Apache+PHP+GD+MongoDB+Redis镜像
- 制作mongodb的Docker镜像文件
- Docker镜像制作
- 制作Docker镜像
- docker制作镜像
- Docker镜像制作
- 制作nginx+php的docker镜像方法
- 制作各种docker镜像
- dockerfile制作docker镜像
- Dockerfile制作Docker镜像
- 制作tomcat docker镜像
- docker基础镜像制作
- 如何制作Docker镜像
- docker之镜像制作
- Docker 构建redis镜像
- Docker构建Redis镜像
- Docker:启动Redis镜像
- docker创建redis镜像
- android 自定义提示框Dialog
- 线程同步机制synchronized
- ios多语言适配
- 标准linu休眠和唤醒机制分析(三)
- swift判断是否已插入耳塞
- Docker 制作Apache+PHP+GD+MongoDB+Redis镜像
- utumno - 5
- 使用亚马逊AWS免费云服务器创建VPN(Ubuntu系统)
- 文章标题
- WARN (org.apache.commons.httpclient.HttpMethodBase:1511) - Cookie rejected 警告
- Elasticsearch2.3.1中文分词ik插件安装
- Netty系列之Netty高性能之道
- iOS UIFont 字体名字
- eclipse 安装 TestNG插件的方法