docker-compose-lnmp-wordpress

使用 docker-compose 在 CentOS 7 上编写并部署 LNMP (Linux, Nginx, MySQL, PHP) 环境的 YAML

文章目录

  • 部署步骤:
    • 1. 安装 Docker 和 Docker Compose
      • 1.1安装 Docker:
      • 1.2安装 Docker Compose:
    • 2.创建目录结构
    • 3.编写docker-compose.yml
    • 4.nginx
      • 4.1编写nginx的Dockerfile
      • 4.2配置ngin.conf
      • 4.3将下列文件放入/opt/lnmp/nginx目录
      • 4.4创建html目录解压wordpress
    • 5.mysql
      • 5.1编写mysql的Dockerfile
      • 5.2配置my.cnf文件
      • 5.3将下列文件放入/opt/lnmp/mysql目录
    • 6.php
      • 6.1编写php的Dockerfile
      • 6.2配置www.conf
      • 6.3配置vim php.ini
      • 6.4vim php-fpm.conf
      • 6.5将下列文件放入目录/opt/lnmp/php
    • 7.上传docker-compose文件至/usr/local/bin目录下
    • 8.启动
    • 10.wordpress网页登录配置

部署步骤:

1. 安装 Docker 和 Docker Compose

在 CentOS 7 上,首先安装 Docker 和 Docker Compose。

1.1安装 Docker:

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.io-20.10.18
systemctl enable --now docker

1.2安装 Docker Compose:

cd /usr/local/bin
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

2.创建目录结构

创建目录以存储 配置文件和网站内容:

cd /opt
mkdir -p /lnmp/nginx /lnmp/mysql /lnmp/php 

3.编写docker-compose.yml

cd /opt/lnmp
vim /opt/docker-compose.ymlversion: '3'
services:nginx:container_name: nginxhostname: nginxbuild:context: /opt/lnmp/nginx/dockerfile: Dockerfileports:- "80:80"- "443:443"volumes:- /opt/lnmp/nginx/html:/usr/local/nginx/htmlnetworks:lnmp:ipv4_address: 172.18.0.10version: '3'
services:nginx:container_name: nginxhostname: nginxbuild:context: /opt/lnmp/nginx/dockerfile: Dockerfileports:- "80:80"- "443:443"volumes:- /opt/lnmp/nginx/html:/usr/local/nginx/htmlnetworks:lnmp:ipv4_address: 172.18.0.10mysql:container_name: mysqlbuild:context: /opt/lnmp/mysqldockerfile: Dockerfileports:- "3306:3306"networks:lnmp:ipv4_address: 172.18.0.22volumes:- db-data:/usr/local/mysqlphp:container_name: phpbuild:context: /opt/lnmp/phpdockerfile: Dockerfileports:- "9000:9000"networks:lnmp:ipv4_address: 172.18.0.30volumes:- db-data:/usr/local/mysql- /opt/lnmp/nginx/html:/usr/local/nginx/htmldepends_on:- nginx- mysqlnetworks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16volumes:db-data:

4.nginx

4.1编写nginx的Dockerfile

cd /myproject/nginx
vim Dockerfile    FROM centos:7
MAINTAINER <ztw-nginx>
ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache && \yum -y install pcre-devel zlib-devel gcc gcc-c++ make && \useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && \make -j4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80 443
ENTRYPOINT ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

4.2配置ngin.conf

cd /opt/lnmp/nginx
vim nginx.conflocation ~ \.php$ {root           html;fastcgi_pass   172.18.0.30:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;include        fastcgi_params;}

4.3将下列文件放入/opt/lnmp/nginx目录

nginx-1.12.0.tar.gz
wordpress-4.9.4-zh_CN.tar.gz
CentOS-Base.repo

4.4创建html目录解压wordpress

mkdir -p /opt/lnmp/nginx/html
tar zxvf /opt/lnmp/nginx/wordpress-4.9.4-zh_CN.tar.gz -C /opt/lnmp/nginx/html

5.mysql

5.1编写mysql的Dockerfile

cd /opt/lump/mysql
vim DockerfileFROM centos:7
MAINTAINER <ztw-php>
FROM centos:7
ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache fast && \yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make perl wget openssl openssl-devel libaio libaio-devel
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN 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_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \-DMYSQL_DATADIR=/usr/local/mysql/data \-DWITH_BOOST=boost \-DWITH_SYSTEMD=1 && \make -j$(nproc) && make install
ADD my.cnf /etc/my.cnf
ENV PATH="/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH"
RUN useradd -M -s /sbin/nologin mysql && \chown mysql:mysql /etc/my.cnf && \chown -R mysql:mysql /usr/local/mysql/RUN /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
EXPOSE 3306
CMD ["/usr/local/mysql/bin/mysqld", "--user=mysql", "--console"]

5.2配置my.cnf文件

cd /opt/lnmp/mysql
vim my.cnf[client]
port = 3306
socket=/usr/local/mysql/mysql.sock[mysql]
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash[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 = 1sql_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

5.3将下列文件放入/opt/lnmp/mysql目录

mysql-boost-5.7.20.tar.gz
CentOS-Base.repo
my.cnf

6.php

6.1编写php的Dockerfile

ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache fast && \yum install -y 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 && \useradd -M -s /sbin/nologin nginx && \yum clean all && rm -rf /var/cache/yumADD php-7.1.10.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-7.1.10RUN ./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 4 && make installENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATHADD php.ini     /usr/local/php/lib/
ADD php-fpm.conf /usr/local/php/etc/
ADD www.conf /usr/local/php/etc/php-fpm.d/EXPOSE 9000CMD ["/usr/local/php/sbin/php-fpm", "-F"]

6.2配置www.conf

cd /opt/lnmp/php
vim www.conf user = nginx
group = nginx
listen = 172.19.0.30:9000

6.3配置vim php.ini

cd /opt/lnmp/php
vim php.inidate.timezone = Asia/Shanghai
mysqli.default_socket = /usr/local/mysql/mysql.sock

6.4vim php-fpm.conf

cd /opt/lnmp/php
vim php-fpm.confpid = run/php-fpm.pid

6.5将下列文件放入目录/opt/lnmp/php

CentOS-Base.repophp-7.1.10.tar.bz2php-fpm.conf  php.ini  www.conf

7.上传docker-compose文件至/usr/local/bin目录下

cd /usr/local/bin
chmod +x docker-compose

8.启动

cd /opt/lnmp
docker-compose -f docker-compose.yml up -d

9.进入容器数据库设置mysql密码和权限

9.1进入数据库

docker ps -a
docker exec -it b690cce7f45d /bin/bash

9.2数据库配置

mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
CREATE DATABASE wordpress;
FLUSH PRIVILEGES;
exit;

9.3验证配置

mysql -u root -p123456
show databases;

exit
mysql -u root -p888888

10.wordpress网页登录配置

192.168.88.90/wordpress/index.php

参考步骤7

https://blog.csdn.net/2301_80613136/article/details/142905803?fromshare=blogdetail&sharetype=blogdetail&sharerId=142905803&sharerefer=PC&sharesource=2301_80613136&sharefrom=from_link

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/455596.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S调度不平衡问题分析过程和解决方案

不平衡问题排查 问题描述&#xff1a; 1、业务部署大量pod(据反馈&#xff0c;基本为任务型进程)过程中&#xff0c;k8s node内存使用率表现不均衡&#xff0c;范围从80%到百分之几&#xff1b; 2、单个node内存使用率超过95%&#xff0c;仍未发生pod驱逐&#xff0c;存在node…

LabVIEW提高开发效率技巧----离线调试

离线调试是LabVIEW开发中一项重要的技巧&#xff0c;通过使用Simulate Signal Express VI生成虚拟数据&#xff0c;开发者能够有效减少对实际硬件的依赖&#xff0c;加速开发过程。这种方法不仅可以提高开发效率&#xff0c;还能降低成本&#xff0c;增强系统的灵活性。 ​ 离…

不同企业规模,外贸财务系统如何灵活应对

ZohoBooks外贸财务系统适用于不同规模企业。小型企业注重成本和易用性&#xff0c;中型企业追求性价比&#xff0c;大型企业看重全面性、数据安全和集成性。企业选择时需考虑实际需求和成本&#xff0c;建议先试用再决定。 一、小型外贸企业 小型外贸企业通常业务规模相对较小…

使用Airtest自动化某云音乐爬取歌曲名称

简介 本文将介绍如何使用Airtest自动化工具来模拟用户操作&#xff0c;从某云音乐中爬取与特定关键词相关的歌曲名称。我们将以搜索“文字”相关的歌曲为例&#xff0c;并将结果保存到本地文件。 准备工作 安装Airtest并配置好Android设备或模拟器。确保你的设备上已安装某云…

项目管理新趋势!2024年,Jira与禅道你更倾向谁?

一、 项目管理软件新趋势概述 2024 年&#xff0c;项目管理软件呈现出诸多新趋势&#xff0c;这些趋势对于项目管理的重要性日益凸显。 在数字化转型方面&#xff0c;项目管理软件成为企业实现数字化转型的关键工具。越来越多的企业认识到&#xff0c;通过项目管理软件可以实…

【T+】畅捷通T+软件更新补丁提示当前系统中没有安装T+产品

【问题描述】 在更新畅捷通T软件补丁的时候&#xff0c; 提示&#xff1a;当前系统中没有安装T产品。但是本机电脑上还能正常打开软件操作使用。 【解决方法】 首先查看控制面板程序中没有T产品&#xff0c;即下图没有T产品信息。 原因是因为控制面板注册表中没有T产品信息。…

机器学习-树结构2-随机森林

上一篇的链接&#xff1a; 机器学习 - 树结构1 - 随机森林-CSDN博客 随机森林的改进方向1&#xff1a; 现有的随机森林中不同决策树中特征的选取是随机的&#xff0c;即先用哪个特征对样本进行分类&#xff0c;再用哪个特征对样本进行分类&#xff0c;特征的选取是随机的&…

[Python学习日记-54] 软件开发目录设计规范

[Python学习日记-54] 软件开发目录设计规范 简介 为什么要设计好目录结构&#xff1f; 目录组织方式 关于 README 的内容 关于 setup.py 和 requirements.txt 关于配置文件的使用方法 简介 我们在浏览一些开源项目或者是一些安装后的软件的时候会发现&#xff0c;不同的两…

解决:IntelliJ IDEA 项目中代码文件不能运行的问题(即:J 标文件的问题)

1、问题描述&#xff1a; 其一、需求为&#xff1a; 想要通过 IntelliJ IDEA 软件打开原 Eclipse 项目文件或新 Java 项目&#xff0c;能正常运行 .java 文件中的代码; 其二、问题描述为&#xff1a; A、通过 IntelliJ IDEA 打开 java 项目&#xff0c;并在打开具体的 .jav…

记nvm管理node

前言 解决来回切换node版本适应不同项目 一、nvm是什么&#xff1f; nvm是用于管理多个 nodejs 的版本控制工具 二、使用步骤 1.卸载nodeJs 若是本地原先有nodeJs版本的话需要先卸载&#xff0c;若是没有则跳过这一步&#xff0c;可以通过命令行来确定是否存在node node…

【C++11】右值引用和移动语义

1 右值引用和移动语义 C98的C语法中就有引用的语法&#xff0c;而C11中新增了的右值引用语法特性&#xff0c;C11之后我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用&#xff0c;都是给对象取别名。 1.1 左值和右值 左值是⼀个表示数据的表达式(如变量名或解引用…

HbuilderX 连接 Genymotion 模拟器

最近在琢磨 uni-app 开发 app 应用&#xff0c;并且想要基于模拟器调试&#xff1b;但模拟器安装好以后&#xff0c;Hbuilder 始终识别不了&#xff08;识别成功了也运行不了代码&#xff09; 模拟器&#xff1a;Genymotion &#xff1b;这款模拟器用于开发调试是比较流畅的。当…

如何禁止上班期间浏览无关网站?

禁止员工在上班期间浏览无关网页主要是为了提升工作效率和生产力&#xff0c;确保员工能够专注于工作任务。同时&#xff0c;这种做法有助于降低网络安全风险&#xff0c;防止恶意软件和钓鱼攻击&#xff0c;减少数据泄露和法律风险&#xff0c;维护公司的专业形象&#xff0c;…

【系统配置】命令行修改统信UOS的grub启动延时

往期好文&#xff1a;【命令操作】Linux中多种关机和重启的命令介绍 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于如何通过命令行配置统信UOS系统的启动延时的文章。在某些场景中&#xff0c;调整系统的启动延时可以帮助用户在系统启动过…

实践OpenVINO™ GenAI

前言 随着 ChatGPT 等聊天机器人的风暴席卷全球&#xff0c;生成式预训练 Transformers &#xff08;GPT&#xff09; 在开发者中正在成为家喻户晓的新名字。生成式 AI&#xff08;GenAI&#xff09; 的发展&#xff0c;尤其是大语言模型和聊天机器人的进步很快、变化不断&…

短剧AI突围战,百度跑偏了

“ 百度短剧的Agent对话功能并不属于颠覆性创新&#xff0c;只是新插件&#xff0c;对短剧行业市场格局影响不大&#xff0c;最多只能算用户痒点。 ” 转载&#xff1a;科技新知 原创 作者丨晓伊 编辑丨蕨影 你是否有过这样的体验&#xff1f; 刷短剧时&#xff0c;因剧情曲…

GraphLLM:基于图的框架,通过大型语言模型处理数据

GraphLLM是一个创新的框架&#xff0c;它允许用户通过一个或多个大型语言模型&#xff08;LLM&#xff09;来处理数据。这个框架不仅提供了一个强大的代理&#xff0c;能够执行网络搜索和运行Python代码&#xff0c;还提供了一套工具来抓取网页数据&#xff0c;并将其重新格式化…

若依前后分离版集成积木报表

1.项目后端结构如下 2.引入JimuReport依赖&#xff0c;在ruoyi-framework的.pom文件中引入积木报表最新依赖,我使用的是1.6.0&#xff0c;可通过 积木报表官网 - JimuReport报表,免费的企业级Web报表工具(可视化报表_低代码报表_在线大屏设计器) 查询最新版本号 <dependenc…

【c++差分数组】P9583涂色

本文涉及知识点 C差分数组 P9583涂色 n行m列方格纸&#xff0c;初始是白色(0层)。共涂色q次&#xff0c;每次选择一行或一列&#xff0c;将这行或列涂一层颜色。如果某次涂色后&#xff0c;某个单格是k层颜色&#xff0c;则涂为白色(0层&#xff09;。求最后被涂色的单格数量…

【Golang】Gin框架中如何定义路由

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…