docker搭建LNMP
docker安装
略
下载镜像
- nginx:最新版
- php-fpm:根据自己需求而定
- mysql:根据自己需求定
以下是我搭建LNMP使用的镜像版本
root@VM-12-16-ubuntu:/docker/lnmp/php/etc# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.34 5761fe35fa53 37 hours ago 577MB
bitnami/php-fpm 8.1.22 33c8b3ab8748 2 days ago 281MB
nginx latest 89da1fb6dcb9 2 weeks ago 187MB
创建路径
# 创建相关目录
mkdir -p /docker/lnmp/php
mkdir -p /docker/lnmp/nginx/conf.d
mkdir -p /docker/lnmp/mysql
compase文件
version: '3'
services:php:image: bitnami/php-fpm:8.1.22volumes:- /var/www/html:/usr/share/nginx/html #宿主机上你的项目放在哪个路径就挂载哪个路径,如laravel,挂到项目所在路径即可,不要挂到public#- /docker/lnmp/php/etc:/opt/bitnami/php/etcrestart: alwaysnginx:image: nginx:latestports:- "80:80"- "443:443"volumes:- /docker/lnmp/nginx/conf.d:/etc/nginx/conf.d- /var/www/html:/usr/share/nginx/html- /var/log/nginx:/var/log/nginxdepends_on:- phprestart: alwaysmysql:image: mysql:8.0.34 volumes:- /docker/lnmp/mysql/data:/var/lib/mysql- /docker/lnmp/mysql/conf.d:/etc/mysql/conf.denvironment:- MYSQL_ROOT_PASSWORD=mysql123 #改成你自己的mysql密码ports:- "3306:3306"restart: always
nginx 配置文件
touch /docker/lnmp/mysql/conf.d/project_a.confcat > /docker/lnmp/mysql/conf.d/project_a.conf << EOF
server {listen 80;server_name php.test;root /usr/share/nginx/html;index index.html index.htm index.php;location / {try_files $uri $uri/ /index.php$is_args$args;}location ~ \.php$ {try_files $uri /index.php =404;fastcgi_pass php:9000; #这里是因为我compose.yml文件中php-fpm服务名称是“php”,你也可以改成你服务的私有地址fastcgi_index index.php;fastcgi_buffers 16 16k;fastcgi_buffer_size 32k;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#fixes timeoutsfastcgi_read_timeout 600;include fastcgi_params;}location ~ /\.ht {deny all;}location /.well-known/acme-challenge/ {root /var/www/letsencrypt/;log_not_found off;}error_log /var/log/nginx/php_error.log;access_log /var/log/nginx/php_access.log;}
EOF
安装mycli
因为docker安装mysql,服务上没有安装mysql客户端,查询不方便,推荐使用mycli,还带命令提示,还可以
apt install mycli -y
#或
yum install mycli -y
特殊要求
- 如果需要自己修改php.ini,请先运行php-fpm镜像,将配置文件拷贝到服务器上,修改后将文件挂到容器
# 临时启动一个php-fpm
docker run --name myphp -d bitnami/php-fpm:8.1.22
# 将配置文件拷贝到自己服务器上
docker cp myphp:/opt/bitnami/php/etc/ /docker/lnmp/php/etc/
# 删除临时php-fpm容器
docker rm -f myphp
测试
测试nginx是否正常
在根目录下创建index.html
<h1>hello,docker!</>
测试nginx是否能正确解析php文件
在根目录下创建index.php
<?php
phpinfo();
测试mysql
注意:如果你用的云服务器,$servername不要设置成公网地址,否则测试连接不成功,最好设置成你的服务器的私有地址
<?php
//$servername = "mysql" 因为我的compose.yml中mysql服务的名字是“mysql”,如果你也和我一样,可以这样写,不是的话,保持和compose.yml文件中mysql服务名一致
$servername = "mysql";
$username = "root";
$password = "mysql123";
$db_name = 'mysql';
$conn = new mysqli($servername, $username, $password, $db_name);
// 检测连接
if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
php连接mysql8报错处理
# 创建mysql.cnf
touch /docker/lnmp/mysql/conf.d/mysql.cnf
# 修改密码验证插件
cat > /docker/lnmp/mysql/conf.d/mysql.cnf <<EOF
[mysqld]
default-authentication-plugin=mysql_native_password
EOF
# 重启mysql镜像
docker-compose -f /docker/lnmp/compose.yml restart mysql
# 登录用root登录mysql
mycli -uroot
# 没有库的可以创建一个,有库跳过这一步
create database blog;
#没有用户的的创建用户,有则跳过
CREATE USER ‘blog‘@‘%‘ IDENTIFIED WITH mysql_native_password BY 'Mysql@2023_!';
#用户授权,有用户的跳过
grant all privileges on blog.* to 'blog'@'%';
#修改密码
ALTER USER ‘native‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘new_password‘;
# 刷新
flush privileges;
注意:docker启动php-fpm,ip地址不是固定的,因此mysql需要将user表中host自动设置为%或者能访问到的地址
常用的docker语句
- 启动容器
#在后台运行
docker-compose -f 你的yml文件 up -d
#在前台运行,调试时常用
docker-compose -f 你的yml文件 up
#停止docker
docker-compose -f 你的yml文件 down
#重启
docker-compose -f 你的yml文件 restart
#查看所以容器
docker ps -a
# 进入容器
docker exec -it 容器id或容器名称 bash
# 从容器中拷贝文件、文件夹到宿主机,通常用于自定一设置时,将文件拷出修改后再挂到容器中
docker cp 容器id或容器名称:路径/文件名称 宿主机路径/文件名
相关文章:

docker搭建LNMP
docker安装 略 下载镜像 nginx:最新版php-fpm:根据自己需求而定mysql:根据自己需求定 以下是我搭建LNMP使用的镜像版本 rootVM-12-16-ubuntu:/docker/lnmp/php/etc# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.0…...
未出现过的最小正整数
给定一个长度为 n 的整数数组,请你找出未在数组中出现过的最小正整数。 样例 输入1:[-5, 3, 2, 3]输出1:1输入2:[1, 2, 3]输出2:4数据范围 1≤n≤105 , 数组中元素的取值范围 [−109,109]。 代码: c…...

易服客工作室:WordPress是什么?初学者的解释
目录 什么是WordPress? WordPress可以制作什么类型的网站? 谁制作了WordPress?它已经存在多久了? 谁使用 WordPress? 白宫网站 微软 滚石乐队 为什么要使用 WordPress? WordPress 是免费且…...

2019年9月全国计算机等级考试真题(C语言二级)
2019年9月全国计算机等级考试真题(C语言二级) 第1题 1、“商品”与“顾客”两个实体集之间的联系一般是 A. 一对一 B. 一对多 C. 多对一 D. 多对多 正确答案:D 第2题 定义学生选修课程的关系模式:SC(S#,…...

LLaMA模型泄露 Meta成最大受益者
一份被意外泄露的谷歌内部文件,将Meta的LLaMA大模型“非故意开源”事件再次推到大众面前。“泄密文件”的作者据悉是谷歌内部的一位研究员,他大胆指出,开源力量正在填平OpenAI与谷歌等大模型巨头们数年来筑起的护城河,而最大的受益…...

企业中商业智能BI,常见的工具和技术
商业智能(Business Intelligence,简称BI)数据可视化是通过使用图表、图形和其他可视化工具来呈现和解释商业数据的过程。它旨在帮助组织更好地理解和分析他们的数据,从而做出更明智的商业决策。 常见的商业智能数据可视化工具和技…...

item_password-获得淘口令真实url
一、接口参数说明: item_password-获得淘口令真实url ,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_password 名称类型必须描述keyString是调用key(…...

基于SOLIDWORKS配置功能建立塑料模具标准件库
在塑料模具的设计过程中,建立其三维模型对于后续进行CAE分析和CAM加工是非常重要的。除了型腔和型芯以外,塑料模具中的标准件很多,如推杆、导柱、导套、推板、限位钉等,这些对于不同的产品是需要反复调用的。目前,我国…...

1.物联网LWIP网络,TCP/IP协议簇
一。TCP/IP协议簇 1.应用层:FTP,HTTP,Telent,DNS,RIP 2.传输层:TCP,UDP 3.网络层:IPV4,IPV6,OSPF,EIGRP 4.数据链路层:Ethernet&#…...
拷贝公钥文件后,ssh 服务器仍提示输入密码
我们因为工作需要,可能在本地包含多个公私钥对,且每个公私钥对在生成时,指定的邮箱也不相同,所以我们在登录一些机器时,会指定不同的公钥文件,但是,有时候就算我们指定了正确的公钥文件…...

算法|Day45 动态规划13
LeetCode 300.最长递增子序列 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目描述:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除&…...
基于随机森林的手写体数字识别,基于RF的手写体数字识别,基于RF的MNIST数据集分类识别
目录 背影 摘要 随机森林的基本定义 随机森林实现的步骤 基于随机森林的MNIST数据集分类识别 代码下载链接: 随机森林的手写体数字分类识别,随机森林的MNIST手写体数据集分类识别,卷积神经网络的手写体数字识别(代码完整,数据完整)资源-CSDN文库 https://download.csdn.n…...

vite初始化vue3项目(配置自动格式化工具与git提交规范工具)
初始化项目 vite构建vue项目还是比较简单的,简单配置选择一下就行了 初始化命令 npm init vuelatest初始化最新版本vue项目 2. 基本选项含义 Add TypeScript 是否添加TSADD JSX是否支持JSXADD Vue Router是否添加Vue Router路由管理工具ADD Pinia 是否添加pinia…...

leetcode473. 火柴拼正方形(回溯算法-java)
火柴拼正方形 leetcode473 火柴拼正方形题目描述回溯算法 上期经典算法 leetcode473 火柴拼正方形 难度 - 中等 原题链接 - leetcode473 火柴拼正方形 题目描述 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍…...
git-fatal: No url found for submodule path ‘packages/libary‘ in .gitmodules
文章目录 前言一、git submodule功能使用二、错误信息:三、解决方法:四、.gitmodules配置文件:总结 前言 最近在做vue项目,因为项目比较复杂,把功能拆分成很多子模块,我们使用Git的submodule功能。遇到错误…...

Android开发之性能优化:过渡绘制解决方案
1. 过渡绘制 屏幕上某一像素点在一帧中被重复绘制多次,就是过渡绘制。 下图中多个卡片跌在一起,但是只有第一个卡片是完全可见的。背后的卡片只有部分可见。但是Android系统在绘制时会将下层的卡片进行绘制,接着再将上层的卡片进行绘制。但其…...
Wireshark 抓包过滤命令汇总
Wireshark 抓包过滤命令汇总 Wireshark 是一个强大的网络分析工具,它可以帮助网络管理员和安全专家监控和分析网络流量。通过捕获网络数据包,Wireshark 能够帮助我们识别网络中的问题、瓶颈以及潜在的安全威胁。在使用 Wireshark 进行网络数据包分析时&…...

配资平台app(正规股票配资软件)架构是怎么搭建的?
随着股票市场的发展,越来越多的投资者开始尝试使用股票配资平台进行杠杆炒股,因此,搭建一套稳定、可靠的配资平台app架构显得尤为重要。本文将介绍配资平台app架构设计的关键要素,以及建立一个正规的配资平台app所需考虑的问题。 …...

【实用黑科技】如何 把b站的缓存视频弄到本地——数据恢复软件WinHex 和 音视频转码程序FFmpeg
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:效率…...
神经网络基础-神经网络补充概念-57-多任务学习
概念 多任务学习(Multi-Task Learning,MTL)是一种机器学习方法,旨在同时学习多个相关任务,通过共享特征表示来提高模型的性能。在多任务学习中,不同任务之间可以是相关的,共享的,或…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...