Dockerfile构建LNMP环境
1. 先构建一个Nginx/PHP/Mysql共用的Centos基础镜像centos:v1
[1] Dockerfile内容如下:
#base image
FROM centos
#maintainer
MAINTAINER liu86th@sina.com
#add epel and 163 aliyun yum
RUN yum install wget epel-release -y \
&& mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back \
&& wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo \
&& wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo \
&& yum clean all \
&& yum makecache \
&& yum -y install pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
#change timzone to Asia/Shanghai
#RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[2] 执行构建命令
[root@server ~]# docker build -t centos:v1 .
[root@server ~]# docker images
2. 构建Nginx
[1] Dockerfile内容如下:
# base image
FROM centos:v1
MAINTAINER liu86th@sina.com
ADD nginx-1.17.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.17.2
# 安装依赖包
RUN groupadd www && useradd -M -s /sbin/nologin www -g www \
&& yum install -y libxslt-devel gd gd-devel GeoIP GeoIP-devel pcre pcre-devel libxml2 libxml2-dev libxslt-devel \
&& ./configure --user=www --group=www --prefix=/usr/local/nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install \
&& mkdir /usr/local/nginx/conf/conf.d
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
COPY fastcgi_params /usr/local/nginx/conf/fastcgi_params
EXPOSE 80
# docker 容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据,如果docker容器pid=1挂了,那么docker容器便会直接退出。
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
[2] 构建镜像
[root@server ~]# docker build -t nginx:v1 .
[root@server ~]# docker images
[root@server ~]# docker run -d --name nginx -p 8888:80 -v E:\Docker\wwwroot:/home/wwwroot --link=php:php nginx:v1
3. 构建PHP镜像
[1] Dockerfile内容如下:
# base image
FROM centos:v1
MAINTAINER liu86th@sina.com
#安装libzip依赖包
ADD libzip-1.2.0.tar.gz /usr/local/src
WORKDIR /usr/local/src/libzip-1.2.0
RUN ./configure && make && make install
#安装依赖包和编译php7.3,并设置php-fpm进程前台运行,与容器生命周期绑定
ADD php-7.3.8.tar.gz /usr/local/src
WORKDIR /usr/local/src/php-7.3.8
RUN yum -y install libxml2 libxml2-devel libzip bzip2 bzip2-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel libcurl libcurl-devel \
&& echo '/usr/local/lib64' >> /etc/ld.so.conf && echo '/usr/local/lib' >> /etc/ld.so.conf && echo '/usr/lib' >> /etc/ld.so.conf && echo '/usr/lib64' >> /etc/ld.so.conf && ldconfig -v && cp -frp /usr/lib64/libldap* /usr/lib/ && cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h \
&& ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/conf.d --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-sysvshm --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --enable-pcntl --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-libmbfl --enable-fileinfo --enable-opcache --with-xsl --enable-calendar --enable-exif --with-pcre-regex && make && make install \
&& cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf \
&& groupadd www && useradd -M -s /sbin/nologin -g www www \
&& sed -i -e 's@;pid = run/php-fpm.pid@pid = run/php-fpm.pid@g' -e 's@nobody@www@g' -e 's@listen = 127.0.0.1:9000@listen = 0.0.0.0:9000@g' /usr/local/php/etc/php-fpm.conf \
&& sed -i 's@;daemonize = yes@daemonize = no@g' /usr/local/php/etc/php-fpm.conf
EXPOSE 9000
CMD ["/usr/local/php/sbin/php-fpm"]
#注意: 上面的sed,有可能不准确,可能需要手动修改www.conf中的listen = 127.0.0.1:9000 => listen = 0.0.0.0:9000的监听端口变化
[2] 构建镜像
[root@server ~]# docker build -t php:v1 .
[root@server ~]# docker images
[root@server ~]# docker run -d --name php -v E:\Docker\wwwroot:/home/wwwroot php:v1
3. 构建Mysql,因为本地使用所以直接用官方的镜像启动
[1] 创建容器前,我们创建一个数据卷mysql-volume,把它挂载到mysql容器中,实现数据持久化
[root@server ~]# docker volume create mysql-volume
[2] 启动mysql容器,如果你本地有mysql镜像,它会引用本的的镜像,如果没有它会去docker hub中拉取:
[root@server ~]# docker run -itd --name mysql --network lnmp -p 13306:3306 --mount src=mysql-volume,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
4. 运行容器
[1] 先创建一个自定义网络,运行ningx、php这些容器的时候加入到lnmp网络中来:
[root@server ~]# docker network ls
[root@server ~]# docker network create lnmp
[2] 运行php
[root@server ~]# docker run -d --name php --network lnmp -v E:\Docker\wwwroot:/home/wwwroot -v E:\Docker\phplogs:/usr/local/php/var/log -v E:\Docker\phpconf:/usr/local/php/etc php:v1
[3] 运行nginx
[root@server ~]# docker run -d --name nginx --network=lnmp -p 8888:80 -v E:\Docker\wwwroot:/home/wwwroot -v E:\Docker\wwwlogs:/usr/local/nginx/logs -v E:\Docker\wwwconf:/usr/local/nginx/conf nginx:v1
[4] 运行mysql
[root@server ~]# docker run -itd --name mysql --network lnmp -p 13306:3306 --mount src=mysql-volume,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
分享到:
相关推荐
Windows10 使用 docker 逐一构建 [lnmp] 目录结构
docker-compose部署LNMP环境(包含 Nginx、MySQL、PHP、Redis)适用人群:计算机,软件工程、人工智能,网络安全,电子信息等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 docker-compose...
docker-compose快速搭建lnmp+redis的开发环境
docker-compose nginx mysql redis php 及php拓展安装
快速的搭建一个php开发环境,镜像包括php,mysql,nginx,适合php的开发者
docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,...
基于CentOS的Docker多容器互连lnmp环境.org安装包+mysql+phpmyadmin)_docker-lnmp
该txt文本文件中有docker镜像百度网盘下载地址与分享码,以及PHP交流群QQ 。 环境组件是 CentOS7+nginx+php7.4+MySQL5.7 ,需要的小伙伴欢迎下载使用! 遇到任何问题,可以通过 QQ 群进行技术交流。
易于安装MySQL、nginx、PHP和PHP扩展的docker-composer.docker-for-lnmp
该项目是一款基于Docker的一键LNMP安装程序源码,由106个文件组成,涵盖Shell、PHP等多种语言,包含配置文件、脚本文件、文档等多种类型。该程序旨在简化LNMP环境的搭建过程,提高部署效率。
_docker-compose部署lnmp__(nginx,、php、_mysql、_redis、__dnmp_fast
.Compose配置文件指令与一键部署LNMP网站 .一键部署Nginx代理Tomcat集群 .一键部署多节点爬虫程序(模拟)
狂神docker笔记(超详细) 1:docekr进阶 2: docker基础入门 都是自己亲自看着bilibili上学习敲打的,还标注了一些,然后还有一些自己的err的解决方法
docker-compose构建Redis哨兵模式镜像包
学习docker时看到的学习笔记
黑马Docker课程文档笔记
本篇文章主要介绍了使用docker创建集成服务lnmp环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
docker集成thinkPHP5.0之LNMP开发环境 docker集成thinkPHP5.0之LNMP开发环境
狂神说Docker容器学习笔记全
此资源是使用docker搭建lnmp运行环境的脚本,需要使用docker-compose进行构建