关闭

[置顶] 基于Dockerfile构建LNMP环境(php7+mysql+nginx) --原创

标签: dockerdockerfilelnmpphp7linux
43人阅读 评论(0) 收藏 举报
分类:

构建LNMP环境(php7+mysql+nginx) –原创

经几个星期反复测试总结出了整个lnmp环境的Dockerfile文件,并已经适用于公司开发环境中。

centOS7.4.1708 + tengine-2.1.2 + php-7.0.17 + PHP扩展

PHP7扩展包括

PDO、PDO_MYSQL、GD、CURL、
mysqli、pcntl、soap、Redis、
mongodb、memcached、gearman、
zeromq、ICE

创建名为Dockerfile的文件

FROM centos:7.4.1708
MAINTAINER hanlc <282552154@qq.com>
RUN mkdir -p /data/software && mkdir -p /usr/local/webserver
ADD repo/ \
/data/software/
WORKDIR /data/software
#安装依赖
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup && \
mv CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum makecache && \
yum -y install gcc gcc-c++\
autoconf wget \
psmisc \
openssl openssl-devel \
gperftools-devel \
tar \
passwd \
openssh-server \
openssh-clients \
initscripts \
unzip pcre pcre-devel zlib zlib-devel git \
libxml2 libxml2-devel curl curl-devel \
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel \
python-setuptools dos2unix gperf \
libevent libevent-devel bzip2-devel ncurses-devel \
boost libtool boost-devel* libuuid-devel python-sphinx.noarch &&\
yum clean all &&\
rm -rf /var/lib/apt/lists/* &&\
rm -rf /var/cache/yum
#用户账号设置
RUN echo 'root:123465' | chpasswd
RUN /usr/sbin/sshd-keygen
RUN /usr/sbin/groupadd oae &&/usr/sbin/useradd -r -m -s /bin/bash -g oae oae && echo "oae
ALL=(ALL) ALL" >> /etc/sudoers && echo 'root:123465' | chpasswd
#安装tengine
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/pcre-8.10.tar.gz &&\
tar zxvf pcre-8.10.tar.gz &&rm -f pcre-8.10.tar.gz && \
cd pcre-8.10 &&./configure&& make&&make install && \
cd .. && rm -rf pcre-8.10 && \
wget https://gitee.com/hanlicun/ltmp/raw/master/src/tengine-2.1.2.tar.gz &&\
tar -zxvf tengine-2.1.2.tar.gz && rm -f tengine-2.1.2.tar.gz &&\
cd tengine-2.1.2 && \
./configure --prefix=/usr/local/webserver/tengine --user=oae --group=oae
--with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module &&\
make &&make install &&\
cd ../ && rm -rf ./tengine-2.1.2 &&\
wget https://gitee.com/hanlicun/ltmp/raw/master/src/nginx.conf &&\
mv nginx.conf \
/usr/local/webserver/tengine/conf/nginx.conf &&\
wget https://gitee.com/hanlicun/ltmp/raw/master/src/nginx &&\
mv ./nginx /etc/init.d/nginx && \
chmod +x /etc/init.d/nginx
# 安装 Libmcrypt
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/libmcrypt-2.5.8.tar.gz &&\
tar zxvf libmcrypt-2.5.8.tar.gz &&rm -f libmcrypt-2.5.8.tar.gz &&\
cd libmcrypt-2.5.8 && \
./configure --prefix=/usr/local && \
make && make install &&\
cd .. && rm -rf libmcrypt-2.5.8
# 安装 PHP7
RUN wget http://cn2.php.net/get/php-7.0.17.tar.gz/from/this/mirror && \
tar zxvf mirror && rm -f php-7.0.17.tar.gz && rm -rf mirror &&\
cd php-7.0.17 && \
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc
--enable-fpm --with-fpm-user=oae --with-fpm-group=oae --with-mysqli --with-pdo-mysql
--with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr
--enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem
--enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-ftp --with-gd
--enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc
--enable-zip --enable-soap --without-pear --with-gettext --enable-fileinfo --enable-maintainer-zts &&
make clean &&make && make install && \
cp ./php.ini-development /usr/local/webserver/php/etc/php.ini && \
cp ./sapi/fpm/init.d.php-fpm.in /etc/init.d/php-fpm &&\
chmod 755 /etc/init.d/php-fpm && \
sed -i '$a chown -R oae:oae /var/run/' /etc/init.d/php-fpm && \
cd /data/software && rm -rf php-7.0.17 && \
sed -i '$aPATH=/usr/local/webserver/php/bin:\$PATH\n export PATH' /etc/profile &&\
source /etc/profile && \
mv /usr/local/webserver/php/etc/php-fpm.conf.default /usr/local/webserver/php/etc/php-fpm.conf &&
\
sed -i 's!@sbindir@!/usr/local/webserver/php/sbin!g' /etc/init.d/php-fpm && \
sed -i 's!@sysconfdir@!/usr/local/webserver/php/etc!g' /etc/init.d/php-fpm && \
sed -i 's!@localstatedir@!/var!g' /etc/init.d/php-fpm && \
mv /usr/local/webserver/php/etc/php-fpm.d/www.conf.default
/usr/local/webserver/php/etc/php-fpm.d/www.conf && \
sed -i 's!127.0.0.1:9000!/var/run/php-fpm.sock!g' /usr/local/webserver/php/etc/php-fpm.d/www.conf
&&\
ln -s /usr/local/webserver/php/bin/php /usr/local/bin/php
#安装 PHP的Redis扩展
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/phpredis.tar.gz &&tar zxvf phpredis.tar.gz
&& rm -rf phpredis.tar.gz &&cd phpredis && /usr/local/webserver/php/bin/phpize && ./configure
--with-php-config=/usr/local/webserver/php/bin/php-config &&make &&make install &&sed -i '$a
extension_dir =/usr/local/webserver/php/lib/php/extensions/no-debug-zts-20151012/\nextension
=redis.so\n' /usr/local/webserver/php/etc/php.ini && cd .. &&rm -rf phpredis
#安装 PHP的mongodb扩展
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/mongodb.so && mv mongodb.so
/usr/local/webserver/php/lib/php/extensions/no-debug-zts-20151012/ && sed -i '$a extension
=mongodb.so' /usr/local/webserver/php/etc/php.ini
#安装 PHP的memcached扩展
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/libmemcached-1.0.18.tar.gz &&tar zxvf
libmemcached-1.0.18.tar.gz && rm -rf libmemcached-1.0.18.tar.gz &&cd libmemcached-1.0.18/
&&mkdir -p /usr/local/webserver/libmemcached && ./configure
--prefix=/usr/local/webserver/libmemcached &&make && make install && cd ../ && rm -rf
libmemcached-1.0.18/ && wget https://gitee.com/hanlicun/ltmp/raw/master/src/memcached-3.0.2.tgz
&&tar zxvf memcached-3.0.2.tgz && rm -rf memcached-3.0.2.tgz && cd memcached-3.0.2/
&&/usr/local/webserver/php/bin/phpize && ./configure --enable-memcached
--with-php-config=/usr/local/webserver/php/bin/php-config
--with-libmemcached-dir=/usr/local/webserver/libmemcached --disable-memcached-sasl && make &&
make install &&cd ../ && rm -rf memcached-3.0.2/ && sed -i '$a extension =memcached.so'
/usr/local/webserver/php/etc/php.ini
#安装gearman扩展
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/gearmand.tar.gz &&tar zxvf gearmand.tar.gz
&& rm -rf gearmand.tar.gz && cd gearmand &&./bootstrap.sh -a &&./configure &&make && make
install && cd .. &&rm -rf gearmand &&wget
https://gitee.com/hanlicun/ltmp/raw/master/src/gearman.so &&mv gearman.so
/usr/local/webserver/php/lib/php/extensions/no-debug-zts-20151012/ && sed -i '$a extension
=gearman.so' /usr/local/webserver/php/etc/php.ini
#安装zmq扩展
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/libzmq.tar.gz &&tar zxvf libzmq.tar.gz &&
rm -rf libzmq.tar.gz && cd libzmq && ./autogen.sh && ./configure && make -j 4 &&make check &&
make install && ldconfig &&cd .. &&wget https://gitee.com/hanlicun/ltmp/raw/master/src/zmq.so
&&mv zmq.so /usr/local/webserver/php/lib/php/extensions/no-debug-zts-20151012/ && rm -rf libzmq
&& sed -i '$a extension =zmq.so' /usr/local/webserver/php/etc/php.ini
#或
#wget https://pecl.php.net/get/zmq-1.1.3.tgz && rm -rf zmq-1.1.3.tgz && \
#cd zmq-1.1.3 && /usr/local/webserver/php/bin/phpize &&\
#./configure --prefix=/usr/local/webserver/zmq
--with-php-config=/usr/local/webserver/php/bin/php-config &&\
# make && make install &&\
#cd pecl-gearman-master
#/usr/local/webserver/php/bin/phpize
#./configure --prefix=/usr/local/webserver/gearman
--with-php-config=/usr/local/webserver/php/bin/php-config
#安装php的ice扩展
RUN cd /data/software && wget https://gitee.com/hanlicun/ltmp/raw/master/src/IcePHP.so &&mv
IcePHP.so /usr/local/webserver/php/lib/php/extensions/no-debug-zts-20151012/ && wget
https://gitee.com/hanlicun/ltmp/raw/master/src/Ice-3.6.4.tar.gz &&tar zxvf Ice-3.6.4.tar.gz && mv
Ice-3.6.4 /opt/ && rm -rf Ice-3.6.4.tar.gz&& sed -i '$a extension =IcePHP.so'
/usr/local/webserver/php/etc/php.ini && sed -i '$a export LD_LIBRARY_PATH=/opt/Ice-3.6.4/lib64'
/etc/profile
#Install Composer
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/composer &&mv composer
/usr/local/bin/composer && chmod +x /usr/local/bin/composer && /usr/local/bin/composer config -g
repo.packagist composer https://packagist.phpcomposer.com
RUN chmod -R 777 /usr/local/webserver/php/var/log/ && chown -R oae:oae /var/run/ && \
mkdir -p /home/oae/web/wwwroot/public/ && \
touch /home/oae/web/wwwroot/public/index.html && \
echo ok > /home/oae/web/wwwroot/public/index.html &&\
echo "<?php phpinfo();?>" > /home/oae/web/wwwroot/public/index.php
#开放端口
EXPOSE 80 22
# 安装 supervisord
RUN easy_install supervisor && \
mkdir -p /usr/local/var/log/supervisord
RUN wget https://gitee.com/hanlicun/ltmp/raw/master/src/supervisord.conf &&\
mv supervisord.conf /etc/supervisord.conf && \
mkdir -p /usr/local/var/run
CMD ["/usr/bin/supervisord","-c", "/etc/supervisord.

构建docker容器

在Dockerfile当前目录下执行

docker build -t lnmp .

然后运行启动一个docker容器

docker run -d -p 88:80 -p 1022:22 lnmp

通过ssh登陆容器内

ssh root@127.0.0.1:1022 -p

或可以直接从阿里云直接下载该镜像

从registry中拉取镜像:

docker pull registry.cn-zhangjiakou.aliyuncs.com/hanlc/lnmp
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

用dockerfile构建基于ubuntu的lnmp环境的镜像

本文主要讲述的是如何用dockerfile构建lnmp环境的镜像,前提默认你已安装好docker
  • turtleo
  • turtleo
  • 2016-09-06 18:50
  • 2180

使用Dockerfile文件构建基于centOS系统的tomcat镜像

上一篇文章的基本做法是通过centOS的官方镜像启动一个容器(上篇文章中图片是直接ctl+v粘贴的,现在不见了不想重新弄),然后进入到容器中,手动敲命令安装JDK跟tomcat,这个跟在linux下搭...
  • weigs81082580
  • weigs81082580
  • 2017-01-19 16:36
  • 1841

Dockerfile分离构建LNMP环境部署wordpress

最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题。在单台上面的架构如下;(往后我们也是要讲到compose和swarm调度的慢慢来) 1、首先我...
  • Leader_roncoo
  • Leader_roncoo
  • 2017-03-03 14:23
  • 381

Docker 构建 Java Web 开发环境——使用Dockerfile(二)

上篇文章 Docker 构建 Java Web 开发环境(一)使用 docker commit 命令,直接在容器中操作(安装软件及配置文件等),比较简单直观;这篇文章使用 docker build命令...
  • lzx_2011
  • lzx_2011
  • 2016-07-30 19:22
  • 4089

使用Dockerfile搭建jdk、tomcat运行环境

Dockerfile文件内容# 版本信息 FROM centos MAINTAINER locutus "locutus@foxmail.com"# OS环境配置 RUN yum install -y...
  • yjk13703623757
  • yjk13703623757
  • 2017-04-01 14:52
  • 2149

利用Dockerfile构建一个基于CentOS 7镜像参考

利用Dockerfile构建一个基于CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像。 Dockerfile内容如下: FROM centos MA...
  • moonpure
  • moonpure
  • 2017-01-11 16:16
  • 1105

LNMP环境搭建

LNMP环境搭建     目录 1 环境准备... 1 1.1 克隆虚拟机... 1 1.2 配置IP. 1 1.3 准备安装软件包... 1 2 安装Nginx. 1 1)更改hostna...
  • sz_bdqn
  • sz_bdqn
  • 2015-06-18 03:33
  • 5512

Docker采用Dockerfile方式构建Tomcat容器镜像

开启Tomcat远程部署设置tomcat-users.xml Dockerfile配置FROM ubuntu
  • boonya
  • boonya
  • 2017-07-07 09:51
  • 1088

3 使用 Dockerfile 实现 自动化构建(创建) 镜像

正常来说,如果下载的一个镜像不尽如人意,想要做一些修改,然后保存为自己的镜像,怎么做呢? 首先启动容器,然后逐条执行自己想要做的修改,最后执行 docker commit 命令 保存镜像。 但是这...
  • xiaoliuliu2050
  • xiaoliuliu2050
  • 2016-12-03 12:35
  • 1480

Docker容器学习梳理-Dockerfile构建镜像

在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低。所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其...
  • sqzhao
  • sqzhao
  • 2017-05-07 03:51
  • 515
    个人资料
    • 访问:68次
    • 积分:33
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档