docker compose搭建博客wordpress
一、前言
docker安装等入门知识见我之前的这篇文章
https://blog.csdn.net/m0_73118788/article/details/146986119?fromshare=blogdetail&sharetype=blogdetail&sharerId=146986119&sharerefer=PC&sharesource=m0_73118788&sharefrom=from_link
1.1 docker compose介绍
Docker Compose 是 Docker 官方提供的一个工具,它可以帮助你定义和运行多个 Docker 容器的应用。他有如下几个用途:
- 多容器应用编排:在实际开发和生产环境中,一个应用往往由多个微服务组成,每个微服务可能运行在独立的 Docker 容器中。例如,一个 Web应用可能包含 Web 服务器容器、数据库容器、缓存容器等。Docker Compose允许你在一个文件中定义这些容器及其依赖关系,然后通过一条命令将它们一次性启动、停止或重新部署。
- 开发环境搭建:开发人员可以使用 Docker Compose快速搭建一个与生产环境一致的开发环境。通过定义各个服务的镜像、端口映射、环境变量等配置,确保开发团队成员的环境一致性,减少因环境差异导致的问题。
- 测试环境部署:在进行集成测试或端到端测试时,需要同时启动多个相关的容器。Docker Compose可以方便地管理这些容器的启动和停止,为测试提供一个稳定的环境。
1.2 docker compose用法初探
#批量上线
docker compose up -d
#批量下线
docker compose down
#启动
docker compose start x1 x2
#停止
docker compose stop x1 x2
#扩容
docker compose scale x2=3
以下是对这三条 Docker Compose 命令的详细解释:
docker compose up -d
功能概述
该命令的主要作用是根据 docker-compose.yml 文件的配置,创建并启动所有定义的服务容器。
参数解释
up:这是Docker Compose的一个子命令,其功能是创建并启动服务。-d:即--detach,它让容器以分离模式在后台运行。这样做的好处是,容器启动后不会将日志信息输出到当前终端,而是返回容器的 ID,方便用户继续在终端执行其他操作。
使用示例
假设你的 docker-compose.yml 文件定义了一个 Web 服务和一个数据库服务,当你在该文件所在目录下执行 docker compose up -d 时,Docker Compose 会自动拉取所需的镜像(如果本地不存在),然后创建并启动这两个服务的容器,使它们在后台运行。
docker compose down
功能概述
此命令用于停止并删除由 docker compose up 创建的容器、网络和(可选的)卷。
详细解释
当你执行 docker compose down 时,Docker Compose 会按以下步骤操作:
- 停止正在运行的所有服务容器。
- 删除这些容器。
- 删除
docker-compose.yml文件中定义的网络。 - 若使用了
--volumes选项,还会删除定义的命名卷。
使用示例
当你完成测试或不再需要这些容器时,在 docker-compose.yml 文件所在目录下执行 docker compose down,可以快速清理环境,释放系统资源。
docker compose start x1 x2
功能概述
该命令用于启动已经停止的服务容器。x1 和 x2 是你在 docker-compose.yml 文件中定义的服务名称,你可以指定一个或多个服务名称,用空格分隔。
详细解释
start:是Docker Compose的子命令,用于启动指定的服务。x1 x2:代表你要启动的服务名称。
使用示例
假设你的 docker-compose.yml 文件定义了多个服务,如 web、db、cache 等。当你执行 docker compose stop web db 停止了 web 和 db 服务后,后续可以通过 docker compose start web db 重新启动这两个服务。
总结来说,docker compose up -d 用于启动整个应用栈,docker compose down 用于清理环境,docker compose start 则用于启动已停止的特定服务。
docker compose stop x1 x2
功能概述
该命令的主要功能是停止 docker-compose.yml 文件中指定的服务容器。这里的 x1 和 x2 代表在 docker-compose.yml 文件里定义的服务名称,你能够指定一个或多个服务名称,以空格分隔。
参数解释
stop:属于Docker Compose的子命令,其作用是停止正在运行的服务容器。x1 x2:指的是要停止的服务名称。
使用示例
假设你的 docker-compose.yml 文件定义了多个服务,像 web、db、cache 等。当你执行 docker compose stop web db 时,Docker Compose 会找到 web 和 db 对应的容器,并且停止它们的运行。不过,这些容器只是被停止,并没有被删除,之后你可以使用 docker compose start web db 再次启动它们。
docker compose scale x2=3
功能概述
此命令用于调整指定服务的容器数量。x2 是在 docker-compose.yml 文件中定义的服务名称,3 表示要将该服务的容器数量扩展或收缩到 3 个。
参数解释
scale:是Docker Compose的子命令,其用途是调整服务的容器数量。x2=3:其中x2为服务名称,3是期望的容器数量。如果当前x2服务的容器数量小于 3,Docker Compose会创建新的容器以达到 3 个;若当前容器数量大于 3,Docker Compose会停止并删除多余的容器,使容器数量变为 3 个。
使用示例
假设在 docker-compose.yml 文件中定义了一个 worker 服务,最初只启动了 1 个容器。当你执行 docker compose scale worker=3 时,Docker Compose 会再创建 2 个 worker 服务的容器,让 worker 服务的容器总数达到 3 个。这在需要根据负载情况动态调整服务规模时非常有用。
二、做法
工程过程
1. 创建yaml文件
准备yaml文件内容
name: myblog
services:mysql:container_name: mysqlimage: mysql:8.0ports:- "3306:3306"environment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_DATABASE=wordpressvolumes:- mysql-data:/var/lib/mysql- /app/myconf:/etc/mysql/conf.drestart: alwaysnetworks:- blogwordpress:image: wordpressports:- "8080:80"environment:WORDPRESS_DB_HOST: mysqlWORDPRESS_DB_USER: rootWORDPRESS_DB_PASSWORD: 123456WORDPRESS_DB_NAME: wordpressvolumes:- wordpress:/var/www/htmlrestart: alwaysnetworks:- blogdepends_on:- mysqlvolumes:mysql-data:wordpress:networks:blog:
命令:
vim compose
然后页面有跳转,按i则页面进入insert模式,粘贴上面的yaml文件内容,按Esc退出编辑,按:wq保存并返回命令行

2. 执行yaml文件
docker compose -f 文件名.yaml up -d

命令行查看


3. 完成验收
访问网站8080端口即可

三、原始方法
此是没有compose的方法,如果你只想搭建博客wordpress或学习compose,完全可以忽略该章节
命令如下
docker run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=wordpress \
-v mysql-data:/var/lib/mysql \
-v /app/myconf:/etc/mysql/conf.d \
--restart always --name mysql \
--network blog\
mysql:8.0docker run -d -p 8080:80
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=123456 \
-e WORDPRESS_DB_NAME=wordpress \
-v wordpress:/var/www/html \
--restart always --name wordpress-app \
--network blog\
wordpress:latest
架构图:

相关文章:
docker compose搭建博客wordpress
一、前言 docker安装等入门知识见我之前的这篇文章 https://blog.csdn.net/m0_73118788/article/details/146986119?fromshareblogdetail&sharetypeblogdetail&sharerId146986119&sharereferPC&sharesourcem0_73118788&sharefromfrom_link 1.1 docker co…...
VueDOMPurifyHTML 防止 XSS(跨站脚本攻击) 风险
VueDOMPurifyHTML 是一个 Vue.js 插件,用于在 v-html 指令中安全地渲染 HTML 内容,防止 XSS(跨站脚本攻击) 风险。 作用 解决 v-html 的安全问题 Vue 的 v-html 会直接渲染原始 HTML࿰…...
代码随想录算法训练营Day30
力扣452.用最少数量的箭引爆气球【medium】 力扣435.无重叠区间【medium】 力扣763.划分字母区间【medium】 力扣56.合并区间【medium】 一、力扣452.用最少数量的箭引爆气球【medium】 题目链接:力扣452.用最少数量的箭引爆气球 视频链接:代码随想录 题…...
国内开源医疗模型研究报告
引言 随着人工智能技术的快速发展,医疗AI领域正经历前所未有的变革。开源医疗模型作为这一领域的核心技术基础设施,不仅推动了医疗智能化进程,也为医疗工作者提供了强大的辅助工具。本报告将深入探讨国内优秀的开源医疗模型,分析…...
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
作者:牧思 背景 随着云原生的普及,Golang 编程语言变得越来越热门。相比 Java,Golang 凭借其轻量,易学习的特点得到了越来越多工程师的青睐,然而由于 Golang 应用需要被编译成二进制文件再进行运行,Golan…...
音乐产业新玩法:NFTs如何颠覆传统与挑战未来?
音乐产业新玩法:NFTs如何颠覆传统与挑战未来? 近年来,NFT(Non-Fungible Token,非同质化代币)像一颗新星,迅速在数字艺术、游戏等领域掀起了革命。而在音乐产业,NFT不仅是一种数字所…...
006.Gitlab CICD流水线触发
文章目录 触发方式介绍触发方式类型 触发方式实践分支名触发MR触发tag触发手动人为触发定时任务触发指定文件变更触发结合分支及文件变更触发正则语法触发 触发方式介绍 触发方式类型 Gitlab CICD流水线的触发方式非常灵活,常见的有如下几类触发方式: …...
512天,倔强生长:一位技术创作者的独白
亲爱的读者与同行者: 我是倔强的石头_,今天是我在CSDN成为创作者的第512天。当系统提示我写下这篇纪念日文章时,我恍惚间想起了2023年11月19日的那个夜晚——指尖敲下《开端——》的标题,忐忑又坚定地按下了“发布”键。那时的我…...
【目标检测】【YOLO综述】YOLOv1到YOLOv10:最快速、最精准的实时目标检测系统
YOLOv1 to YOLOv10: The fastest and most accurate real-time object detection systems YOLOv1到YOLOv10:最快速、最精准的实时目标检测系统 论文链接 0.论文摘要 摘要——本文是对YOLO系列系统的全面综述。与以往文献调查不同,本综述文…...
青少年编程与数学 02-016 Python数据结构与算法 16课题、贪心算法
青少年编程与数学 02-016 Python数据结构与算法 16课题、贪心算法 一、贪心算法的基本概念定义组成部分 二、贪心算法的工作原理三、贪心算法的优点四、贪心算法的缺点五、贪心算法的应用实例(一)找零问题(二)活动安排问题&#x…...
日常学习开发记录-slider组件
日常学习开发记录-slider组件 从零开始实现一个优雅的Slider滑块组件前言一、基础实现1. 组件结构设计2. 基础样式实现3. 基础交互实现 二、功能增强1. 添加拖动功能2. 支持范围选择3. 添加垂直模式 三、高级特性1. 键盘操作支持2. 禁用状态 五、使用示例六、总结 从零开始实现…...
Windows 系统如何使用Redis 服务
前言 在学习过程中,我们长期接触到的是Mysql 关系型数据库,也是够我们平时练习项目用的,但是后面肯定会有大型数据的访问就要借助新的新的工具。 一、什么是Redis Redis(Remote Dictionary Server)是一个基于内存的 键…...
【unity游戏开发入门到精通——UGUI】CanvasScaler画布缩放器组件
注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——UGUI】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、CanvasScaler画布缩放器组件是什么二、CanvasScaler的三种适配模式1、Cons…...
Hugging Face 模型:AI 模型的“拥抱”与开源革命!!!
🌐 Hugging Face 模型:AI 模型的“拥抱”与开源革命 用表情符号、图表和代码,探索开源模型生态的底层逻辑与应用场景! 🌟 名字由来:为什么叫 Hugging Face? “Hugging”:象征 开放…...
关于 人工智能(AI)发展简史 的详细梳理,按时间阶段划分,涵盖关键里程碑、技术突破、重要人物及挑战
以下是关于 人工智能(AI)发展简史 的详细梳理,按时间阶段划分,涵盖关键里程碑、技术突破、重要人物及挑战: 字数:约2500字 逻辑结构:时间线清晰,分阶段描述技术突破、关键事件与挑战…...
微服务即时通信系统---(四)框架学习
目录 ElasticSearch 介绍 安装 安装kibana ES客户端安装 头文件包含和编译时链接库 ES核心概念 索引(Index) 类型(Type) 字段(Field) 映射(mapping) 文档(document) ES对比MySQL Kibana访问ES测试 创建索引库 新增数据 查看并搜索数据 删除索引 ES…...
Android查看依赖树的方法,简单有效
一、使用命令打印 在工具栏“Terminal”中输入以下命令,即可打印依赖树信息 gradlew xxxx:dependencies (“xxxx”为module名称)二、工具栏双击打印 右侧“Gradle”工具栏打开按下图顺序依次查找到“dependencies”,双击后依赖树就会在控制台中打印出…...
自动化测试工具playwright中文文档-------14.Chrome 插件
介绍 注意 插件仅在以持久化上下文启动的 Chrome/Chromium 浏览器中工作。请谨慎使用自定义浏览器参数,因为其中一些可能会破坏 Playwright 的功能。 以下是获取位于 ./my-extension 的 Manifest v2 插件背景页面句柄的代码示例。 from playwright.sync_api imp…...
GitHub配置密钥
1.生成SSH密钥 1)检查 SSH 密钥是否存在 首先,确认是否已经在本地系统中生成了 SSH 密钥对。可以通过以下命令检查: ls -al ~/.ssh 在命令输出中,应该能看到类似 id_rsa 和 id_rsa.pub 这样一对文件。如果这些文件不存在&#…...
【2-10】E1与T1
前言 之前我们简单介绍了人类从电话线思维到如今的数据报分组交换思维过渡时期的各种技术产物,今天我们重点介绍 E1/T1技术。 文章目录 前言1. 产生背景2. T13. E14. SONET4.1 OC-14.2 OC-3 及其它 5. SDH5.1. STM-1 6. SONET VS SDH后记修改记录 1. 产生背景 E1/…...
【设计模式】适配器模式:让不兼容的接口和谐共处
引言 在软件开发中,我们经常会遇到这样的情况:两个已经存在的接口无法直接协同工作,但我们又希望它们能够无缝对接。这时,适配器模式就派上用场了。适配器模式(Adapter Pattern)是一种结构型设计模式&…...
Servlet、HTTP与Spring Boot Web全面解析与整合指南
目录 第一部分:HTTP协议与Servlet基础 1. HTTP协议核心知识 2. Servlet核心机制 第二部分:Spring Boot Web深度整合 1. Spring Boot Web架构 2. 创建Spring Boot Web应用 3. 控制器开发实践 4. 请求与响应处理 第三部分:高级特性与最…...
PTA:古风排版
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串&a…...
Android LiveData学习总结(源码级理解)
LiveData 工作原理 数据持有与观察者管理:LiveData 内部维护着一个数据对象和一个观察者列表。当调用 observe 方法注册观察者时,会将 LifecycleOwner 和 Observer 包装成 LifecycleBoundObserver 对象并添加到观察者列表中。生命周期感知:L…...
Pandas进行数据预处理(标准化数据)③
数据标准化处理代码解析 数据标准化处理代码解析课前预习1. 离差标准化(Min - Max Scaling)结果2. 标准差标准化(Standard Scaling)结果3. 小数定标标准化(Decimal Scaling)结果 代码整体概述代码详细解析1…...
vue里provide作用:将一组全局方法注入到 Vue 应用的所有子组件中
在 Vue.js 中, provide(mainFunc, {...}) 是依赖注入(Dependency Injection)的提供者(provider)部分,它的作用是: 功能说明 : 将一组全局方法注入到 Vue 应用的所有子组件中子组件可以通过 inject 接收这些方法 import { provi…...
基于uniapp 实现画板签字
直接上效果图 代码 <template><view class"container"><!-- 签名画布 --><view class"canvas-container"><canvas canvas-id"signCanvas" class"sign-canvas"touchstart"handleTouchStart"touc…...
JDBC 初认识、速了解
目录 一. JDBC的简介 1. 数据的持久化 2. 什么是JDBC 二. JDBC中常用的类和接口 1. Driver 接口 2. DriverManager 类 3. Connection 接口 4. Statement 接口 5. PreparedStatement接口 6. ResultSet 接口 三. 总结 前言 从现在开始就来讲解JDBC的相关知识了 本文的…...
(2025亲测可用)Chatbox多端一键配置Claude/GPT/DeepSeek-网页端配置
1. 资源准备 API Key:此项配置填写在一步API官网创建API令牌,一键直达API令牌创建页面创建API令牌步骤请参考API Key的获取和使用API Host:此项配置填写https://yibuapi.com/v1查看支持的模型请参考这篇教程模型在线查询 2. ChatBox网页版配…...
4.vtk光照vtkLight
文章目录 VTK中的光照1. vtkLight 的两种类型:位置光照和方向光照2. vtkLight 的常用方法3. 方法命名风格4. vtkProp 的可见性与 vtkLight 的开关 示例 VTK中的光照 vtkLight: 用于定义一个或多个光源。每个光源可以有其颜色、位置、焦点等属性。 vtkActor: 每个vtk…...
