docker构建基于LNMP
先创建nginx的镜像
#在opt下创建dockerfile文件夹
#在docekrfile文件下创建三个文件夹。分别配置mysql,nginx,php
#编写nginx应用镜像dockerfile文件
FROM centos:7 #基于centos7镜像 MAINTAINER this is nginx of LNMP on centos by yr 2024-01-27 #注释信息 ADD nginx-1.24.0.tar.gz /opt/ #将nginx安装包传输到镜像中 RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make && \ yum clean all && \ useradd -M -s /sbin/nologin nginx && \ cd /opt/nginx-1.24.0/ && \ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && \ make && make install #下载编译安装nginx的依赖环境,以及创建nginx用户,进入nginx目录中,完成配置、编译、安装 ENV PATH $PATH:/usr/local/nginx/sbin #创建镜像的环境变量 ADD nginx.conf /usr/local/nginx/conf/nginx.conf #将配置文件传输到镜像中,覆盖原有的nginx.comnf文件 EXPOSE 80 #暴露80端口 #EXPOSE 443 CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"] #设置启动后命令
#基于dockerfile构建nginx:centos镜像
创建mysql镜像
[client] port = 3306 socket=/usr/local/mysql/mysql.sock [mysqld] user = mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data port = 3306 character-set-server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket=/usr/local/mysql/mysql.sock bind-address = 0.0.0.0 skip-name-resolve max_connections=2048 default-storage-engine=INNODB max_allowed_packet=16M server-id = 1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
编写构建mysql应用镜像的Dockerfile文件
FROM centos:7 #基于centos7镜像 MAINTAINER this is mysql image for LNMP by <yr> #注释信息 ADD mysql-boost-5.7.44.tar.gz /opt COPY my.cnf /etc/my.cnf #将安装包和配置文件传输到镜像中 RUN yum -y install ncurses ncurses-devel bison cmake openssl-devel gcc gcc-c++ make && \ yum clean all && \ cd /opt/mysql-5.7.44/ && \ cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=boost \ -DWITH_SYSTEMD=1 && \ make -j 2 && make install && \ useradd -M -s /sbin/nologin mysql && \ chown -R mysql:mysql /usr/local/mysql/ && \ chown mysql:mysql /etc/my.cnf && \ /usr/local/mysql/bin/mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data #依次安装依赖环境,注意新版本要openssl环境,注意提示报错查看 #清理yum缓存 #进入mysql解压包中,完成cmake--编译--安装 #创建一个MySQL用户 #修改配置文件权限 #修改安装目录的权限 #直接用命令启动mysql ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/lib #配置环境变量 EXPOSE 3306 #暴露端口3306 CMD ["/usr/local/mysql/bin/mysqld"] #设置默认启动命令
基于Dockerfile构建mysql:centos镜像
创建php镜像
#准备号php安装包,和PHP的三个配置文件
编写构建php应用镜像的Dockerfile文件
FROM centos:7 #基础镜像为centos7 MAINTAINER this is php image for LNMP by (yr 20240127) #注释信息 ADD php-7.1.10.tar.bz2 /opt/ #将文件传输到镜像中 RUN yum -y install gd \ libjpeg libjpeg-devel \ libpng libpng-devel \ freetype freetype-devel \ libxml2 libxml2-devel \ zlib zlib-devel \ curl curl-devel \ openssl openssl-devel \ gcc gcc-c++ make pcre-devel && \ yum clean all && \ cd /opt/php-7.1.10/ && \ ./configure \ --prefix=/usr/local/php \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-mysqli \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-openssl \ --enable-fpm \ --enable-mbstring \ --enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip && make -j 2 && make install && \
useradd -M -s /sbin/nologin nginx
#通过RUN依次下载PHP的依赖环境,清理yum缓存
#进入php文件中,进行配置--编译--安装
#创建nginx用户
COPY php.ini /usr/local/php/lib/php.ini
COPY php-fpm.conf /usr/local/php/etc/php-fpm.conf
COPY www.conf /usr/local/php/etc/php-fpm.d/www.conf
#将三个配置文件传输到镜像中
ENV PATH $PATH:/usr/local/php/bin:/usr/local/php/sbin
#进行容器环境变量
EXPOSE 9000
#暴露端口9000
CMD [ "/usr/local/php/sbin/php-fpm", "-F" ]
#启动
基于Dockerfile构建php:centos镜像
完成对接
#删除之前自定义的网络mynework
#创建一个自定义网络,网段为172.18.0.0/16,名称为mynetwork
docker run -d --name nginx -v /opt/dockerfile/nginx/html:/usr/local/nginx/html -p 80:80 --network mynetwork --ip 172.18.0.2 nginx:centos
#创建nginx容器,-v 将宿主机准备的网页目录挂载到容器中,并做好端口映射到宿主机的80端口,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.2
#验证下共享是否完成
docker run -d --name mysql --privileged -v /usr/local/mysql --network mynetwork --ip 172.18.0.4 mysql:centos
#创建mysql容器,-v 创建数据卷,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.4
#进入mysql容器里
#没有密码,输入mysql直接进入要给MySQL设置个密码
#直接回车,enter password (进行账号初始化)
docker run --name php -d -p 9000:9000 --volumes-from mysql --volumes-from nginx --net mynetwork --ip 172.18.0.3 php:centos
#创建php容器,--volumes-from 将mysql和nginx的数据卷都挂载到php容器中,并做好端口映射到宿主机的9000端口,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.3
#三个容器以创建好
#测试下
标签:--,LNMP,nginx,WordPress,usr,mysql,docker,php,local From: https://www.cnblogs.com/yanrui07/p/17991999