首页 > 其他分享 >通过docker构建基于LNMP的WordPress项目

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

时间:2024-01-27 22:00:34浏览次数:22  
标签:-- LNMP nginx WordPress usr mysql docker php local

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

相关文章

  • Docker 完整指南
    欢迎来到Docker的完整指南!在这个教程中,我们将深入研究Docker的各种特性,从基础的容器操作到高级的网络配置和数据管理。让我们一步步地探索Docker的丰富功能。1.安装Docker首先,确保您已经在系统上安装了Docker。可以在Docker官方网站上找到适用于您操作系统的安装说......
  • filebeat整合docker
    1、新建filebeat.yml的配置文件用于指定Filebeat如何收集和传输日志数据。filebeat.inputs:-type:dockerenabled:truecontainers.ids:-"*"output.elasticsearch:hosts:["your-elasticsearch-host:9200"] 2、 创建DockerCompose文件version:"3"......
  • 【小记】Docker容器间SSH公钥自动交换实现免密登录的一次尝试
    咋想到这茬了最近开始忙毕设的事儿了,想部署个伪分布式的Spark+Hadoop集群来进行测试。思来考去,最终咱把目光放在了Docker上。盘了两天,发现这玩意意外的有趣,镜像构建好后开箱即用,省去了些配置环境的成本。不过呢,在配置Hadoop的时候我发现了一个问题——Hadoop分布式搭建要求各......
  • 【Docker-compose】django不分离项目
    文件/文件夹-映射#django在处理数据库或者媒体文件持久时需要用到#nginx在读取媒体文件的时候需要用到1:移动静态文件(staticmediadb.sqlite3等)到定义的宿主机路径:/usr/graduation下--/usr/graduation/static--/usr/graduation/media--/usr/gradu......
  • docker容器日志输出到es
    1、安装插件dockerplugininstallelastic/elastic-logging-plugin:8.11.32、修改/etc/docker/daemon.json  {"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","https://docker.mirrors.u......
  • docker安装宝塔面板并跳过强制绑定账号
    1.下载镜像dockerpullbtpanel/bt2.启动dockerrun-itd--net=host--restart=always-v/data/app:/opt--namebaotacyberbolt/baota:latest这里映射目录是为了上传的文件,宿主机可以看到3.跳过强制绑定账号:进入容器执行下面脚本rm-rf/www/server/panel/dat......
  • docker run 共享host网络
    最近在尝试tensorrt-llm,它需要dockerrun一个container,但我在container内部没法从github上下项目。$docker--versionDockerversion24.0.5,build24.0.5-0ubuntu1~22.04.1解决方法:将本机的网络代理修改成global模式连接rundocker的时候输入:dockerrun-it--......
  • CentOS 安装docker教程
    第一步执行sudoyuminstall-yyum-utils安装工具包执行后报错:adminisnotinthesudoersfile.Thisincidentwillbereported.解决办法:1>、进入超级用户模式。也就是输入"su-",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。2>、添加文件的写权......
  • 了解docker
    快速入门视频参考:BV11L411g7U1,资料:https://docker.easydoc.net:主windows平台虚拟机环境基础镜像:ubuntu-22.04.3-desktop-amd64.iso安装os时配置:中文简体,NAT网络登录,4G内存,100G磁盘,仅作为参考基础配置如下:#1.设置超级用户密码,之后始终以超级用户登录sudopasswdroot#设置......
  • 使用docker部署编译环境并使用gitlab-ci实现代码自动打包
    使用docker部署编译环境并使用gitlab-ci实现代码自动打包一、需求1、需求描述实现代码git仓库提交能够自动编译出结果①需要一个编译环境能够共享编译:使用docker创建镜像来维护,创建完毕无需频繁修改②使用gitlab的ci进行持续继承,代码提交自动打包,ci中会使用①中的镜像作为运......