Docker中部署NMP环境

2023-10-19 08:10
文章标签 部署 docker 环境 nmp

本文主要是介绍Docker中部署NMP环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

文章目录

  • 下载镜像
  • 创建数据持久化存放目录
  • 创建相关配置文件
  • 创建自定义网络
  • 启动NGINX容器
  • 启动PHP容器
  • 启动MYSQL容器
  • 测试NMP环境
  • 基于NMP容器构建WordPress博客项目

下载镜像

docker pull php:7.0.10-fpm-alpine
docker pull nginx:1.22.0
docker pull mysql:5.7.39

创建数据持久化存放目录

说明:docker的数据持久化是数据不会随着容器的结束而结束,数据持久化分为具名挂载和匿名挂载,本次使用具名挂载,将数据存储在宿主机上并指定挂载宿主机挂载点。

mkdir /data/NMP/{MYSQL,PHP,NGINX,WEB} -p	   // 创建NGINX、PHP、MYSQL、WEB目录
mkdir /data/NMP/MYSQL/{conf,data}			   // 创建MYSQL配置目录、数据存储目录
mkdir /data/NMP/MYSQL/logs				   // 创建MYSQL日志存放目录
chmod 777 /data/NMP/MYSQL/logs/			   // 赋予MYSQL日志目录权限
mkdir /data/NMP/NGINX/{conf,logs}			   // 创建NGINX配置目录、日志存放目录
mkdir /data/NMP/PHP/conf					   // 创建PHP配置文件存放目录

创建相关配置文件

创建NGINX配置文件让其支持PHP:
说明:“172.66.68.101”是PHP服务器的IP地址(必须指定),“/var/www/html”是PHP服务器存放网页内容的地址,这里需要结合PHP容器内决定。

vim /data/NMP/NGINX/conf/docker.conf				// 创建NGINX配置文件
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.php index.html;}location ~ \.php$ {root  html;fastcgi_pass 172.66.68.101:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;include fastcgi_params;}
}

创建MYSQL配置文件让其开启MYSQL日志:
如果无需记录MYSQL的日志文件,则可以忽略此步骤,忽略的同时在启动容器的时候就可以不用挂载MYSQL日志存放目录。

cat > /data/NMP/MYSQL/conf/docker.cnf << EOF
[mysqld]
log_error=/mysql/mysql.error.log
EOF

创建自定义网络

自定义网络修复了Docker0网桥与容器之间无法用容器名互相ping通的问题,只能使用IP才能ping通,但是我们自定义的网络是可以用IP或容器名互相ping通的,它的好处是将不同的集群使用不同的网络,保证集群是安全和健康的!
创建一个名为“LNMP”的网络名称、采用“brige”网络模式、IP网段“172.66.68.0/24”、网关地址“172.66.68.1”

docker network create --driver bridge --subnet 172.66.68.0/24 --gateway 172.66.68.1 LNMP

启动NGINX容器

命名为“NGINX_1”,IP地址“172.66.68.100”,映射端口“80”。

docker run -d --name=NGINX_1 -p80:80 --net=LNMP --ip=172.66.68.100 \
-v /data/NMP/NGINX/conf/:/etc/nginx/conf.d \
-v /data/NMP/NGINX/logs/:/var/log/nginx \
-v /data/NMP/WEB/:/usr/share/nginx/html nginx:1.22.0

启动PHP容器

命名为“PHP_1”,IP地址“172.66.68.101”。

docker run -d --name=PHP_1 --net=LNMP --ip=172.66.68.101 \
-v /data/NMP/WEB/:/var/www/html/ \
-v /data/NMP/PHP/conf:/usr/local/etc/php/conf.d php:7.0.10-fpm-alpine

启动MYSQL容器

命名为“MYSQL_1”,IP地址“172.66.68.102”,映射端口“3306”。

docker run -d --name=MYSQL_1 -p3306:3306 --net=LNMP --ip=172.66.68.102 \
-v /data/NMP/MYSQL/data/:/var/lib/mysql \
-v /data/NMP/MYSQL/conf/:/etc/mysql/conf.d \
-v /data/NMP/MYSQL/logs/:/mysql/ -e MYSQL_ROOT_PASSWORD=asdzxc mysql:5.7.39

测试NMP环境

创建测试PHP连接:

echo "<?php phpinfo(); ?>" > /data/NMP/WEB/index.php

浏览器访问:http://172.66.66.66/index.php
在这里插入图片描述
创建测试连接数据库:

docker exec -it 30d4136b979e  /bin/sh	// 进入PHP容器“30d4136b979e容器ID”
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories	// 修改本地源
docker-php-ext-install mysqli 		// 安装php扩展支持连接MYSQL
exit				// 退出容器
docker restart 30d4136b979e		// 重启PHP容器“30d4136b979e容器ID”
vim /data/NMP/PHP/html/sql.php			// 创建数据库连接
<?php
$servername = "172.66.68.102";
$username = "root";
$password = "asdzxc";// 创建连接
$conn = new mysqli($servername, $username, $password);// 检测连接
if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

浏览器访问:http://172.66.66.66/sql.php
在这里插入图片描述

基于NMP容器构建WordPress博客项目

rm -rf /data/NMP/WEB/*        // 删除刚测试的文件
wget https://cn.wordpress.org/wordpress-5.0.4-zh_CN.tar.gz				// 下载wordpress
tar zxvf wordpress-5.0.4-zh_CN.tar.gz -C /data/NMP/WEB/				// 解压wordpress
cd /data/NMP/WEB/wordpress/						// 进入到项目目录
cp wp-config-sample.php wp-config.php				// 复制项目配置文件
vim wp-config.php						// 修改项目配置文件(修改以下标红内容)
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');/** MySQL数据库用户名 */
define('DB_USER', 'user');/** MySQL数据库密码 */
define('DB_PASSWORD', '123456');/** MySQL主机 */
define('DB_HOST', '172.66.68.102');
# a进行插入,修改完成后按Esc,:wq保存退出

配置数据库:进入到MYSQL容器

docker exec -it c03f2e2221a2  /bin/bash			// 进入MYSQL容器
mysql -uroot -p
create database wordpress;			// 创建数据库
create user 'user'@'%' identified by '123456';			// 创建用户
grant all privileges on wordpress.* to 'user'@'%';	// 用户授权
flush privileges;					// 刷新权限

浏览器访问:http://172.66.66.66/wordpress
在这里插入图片描述
登录到项目中:
在这里插入图片描述
至此部署完成~希望此文档对您有所帮助,祝你工作顺利!!!

这篇关于Docker中部署NMP环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238500

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus