通过docker构建基于LNMP的WordPress项目

ZYC·2024-01-27 21:55·14 次阅读

通过docker构建基于LNMP的WordPress项目

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

 #三个容器以创建好

 

 #测试下

 

 

 

 

 

posted @   citywalk  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示
目录