完整教程:Docker Compose 一键启动多容器服务

news/2025/9/20 14:27:16/文章来源:https://www.cnblogs.com/lxjshuju/p/19102423

目录

  • 一、使用 Docker 部署 WordPress + MySQL
    • 1. 命令式安装
      • 创建网络
      • 启动 MySQL
      • 启动 WordPress
    • 2. 使用 Docker Compose
      • 创建配置文件
      • 写入内容
      • 启动服务
    • 3. 为什么必须写volumes和networks
    • 4. 总结

一、使用 Docker 部署 WordPress + MySQL

1. 命令式安装

创建网络

docker network create blog

启动 MySQL

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.0

启动 WordPress

docker 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

打开浏览器访问:
http://localhost:8080

✅ 你就能看到 WordPress 安装界面啦。

在这里插入图片描述


2. 使用 Docker Compose

官方文档:Compose File Reference

在这里插入图片描述

创建配置文件

vim compose.yaml

写入内容

name: myblog
services:
mysql:
image: mysql:8.0
ports:
- "3306:3306" # 如果宿主机已占用 3306,可以改成 3307:3306
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=wordpress
volumes:
- mysql-data:/var/lib/mysql
- /app/myconf:/etc/mysql/conf.d
restart: always
networks:
- blog
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: 123456
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress:/var/www/html
restart: always
networks:
- blog
depends_on:
- mysql
volumes:
mysql-data: # 存放 MySQL 数据
wordpress: # 存放 WordPress 网站文件
networks:
blog:

启动服务

docker compose -f compose.yaml up -d

在这里插入图片描述


3. 为什么必须写volumes和networks

1)需要持久化数据 → 写 volumes:

  • 数据库数据、WordPress 上传的文件、配置文件,都必须持久化保存。
  • 如果不写,会报错:volume not found
volumes:
mysql-data:
wordpress:

2)需要容器互通 → 写 networks:

  • MySQL 和 WordPress 必须在同一网络中才能通信。
  • 如果不写,会报错:network not found
networks:
blog:

4. 总结

  • 命令式安装 → 适合测试,简单粗暴。
  • Docker Compose → 适合长期部署,配置集中、管理方便。
  • MySQL + WordPress 场景下,必须写顶层的 volumes:networks:
  • 如果只是单个容器(如 Nginx 静态站点),不依赖其他服务,就可以省略。

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

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

相关文章

【截稿倒计时、高录用、稳检索】2025年教育创新与信息技术国际学术会议(EIIT 2025)

【高录用、稳检索】 2025年教育创新与信息技术国际学术会议 2025 International Conference on Educational Innovation and Information Technology (EIIT 2025) 教育、创新、信息科学相关主题方向均可投稿 *参会者现…

低代码 + AI 构建智慧校园系统:某高校宿舍报修平台的48小时构建全流程

低代码 + AI 构建智慧校园系统:某高校宿舍报修平台的48小时构建全流程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &…

[MCP][07]logging和progress等功能说明

除了基础的Prompt、Resource和Tool概念,FastMCP还提供了以下功能:Sampling、Elicitation、Logging、Progress、Proxy、Middleware、Composition和Authentication功能前言 截至目前(2025年9月19日),除了基础的Prom…

端口命令

1、查询指定端口(如查询 8080 端口):netstat -ano | findstr "8080"结果说明:LISTENING 表示端口正在监听;最后一列数字是 进程 PID2、通过 PID 查对应进程(如 PID 为 1234):tasklist | findstr &qu…

Microsoft OLE漏洞致远程代码执行安全公告解析

微软发布安全公告3010060,披露Windows OLE组件远程代码执行漏洞。攻击者通过特制PowerPoint文件实施定向攻击,本文提供受影响环境、攻击向量及临时缓解方案(Fix it工具、UAC配置、EMET部署)的详细技术指导。セキュ…

写代码还是写提示词?——Prompt 工程是不是程序员的新技能树

过去二十年,程序员的核心技能几乎没变:学语言、写代码、调 bug。但是 AI 大模型的出现,正在悄悄改写这套逻辑。 有人开始疑惑:👉 “未来的程序员,还需要会写代码吗?”👉 “Prompt 工程(提示词工程)是不是新…

c-store发送dcm文件超时

错误代码:FellowOakDicom.Network.DicomAssociationRequestTimedOutException:“The association request timed out 3 times, waiting 5000ms each time for the association response等超时返回解决方案:首先要明白…

解码C语言模块化编程

一、模块化设计原则原则 说明 示例高内聚 模块内部功能紧密相关 将数学计算函数集中到 math_utils 模块低耦合 模块间依赖最小化(通过接口通信) 使用头文件声明接口,隐藏实现细节单一职责 每个模块只解决一个特定问…

redis存储漂流瓶信息

问题 比如漂流瓶的数据,都放在redis里,支持12小时过期,支持最大捡起数,支持重复捡取。 漂流了内容,有头像,昵称,内容(文字,语音),年龄,城市,过期时间,读取次数。 支持随机捡瓶子。 使用tp5需要怎么设计…

hashcat高效爆破Wi-Fi密码方法(比aircrack-ng快)

​ (tip:本文所有操作在个人测试环境下运行,请不要用于违法行为) 准备工具: 电脑 kali-linux-2025.2系统(4G内存以上) ----在aircrack爆破时,无线网络审计套件(aircrack-ng)作为内置模组组件常用于一体化流程爆破密…

更新到macOS Sequoia后,chrome无法用ip访问192.168.*

设置 -> 隐私与安全 -> 本地网络 开启chrome按钮 System Settings -> Privacy & Security -> Local Network

Typora标题自动显示序号,大纲中也显示序号

Typora标题自动显示序号,大纲中也显示序号 代码一:一级标题显示序号点击查看代码 /*************************************** Header Counters in TOC (目录中的标题计数器)**************************************/…

【IEEE出版、格林威治大学主办】第六届信息科学与并行、分布式处理国际学术会议(ISPDS 2025)

第六届信息科学与并行、分布式处理国际学术会议(ISPDS 2025) 2025 6th International Conference on Information Science, Parallel and Distributed Systems 在这里看会议官网详情 2025年10月31日-11月2日 | 英国-…

​​Snipaste 2.10.1.dmg截图安装教程|Mac电脑拖拽安装详细步骤​

​​Snipaste 2.10.1.dmg截图安装教程|Mac电脑拖拽安装详细步骤​​​Snipaste​​ 是一款超好用的 ​​截图 + 贴图工具​​,特别适合 Mac 用户日常使用。 第一步:下载文件 (这一步你可能已经完成了) 安装包下载…

Day18面向对象的基本认识与回顾方法的定义

package oop;import java.io.IOException;//类:Demo1 public class Demo1 {//main:方法public static void main(String[] args) {}/*修饰符 返回值类型 方法名(.....){方法体return 返回值}*///return 结束方法…

【2025-09-19】连岳摘抄

23:59大家知道,时间有时像鸟儿一样疾飞,有时像蠕虫一样爬行,不过,当一个人觉察不到时间的快慢时,他往往会感到特别幸福。——屠格涅夫本科学历有没有用呢?或者说,教育有没有用呢?一、当然是有用的。因为我们这…

【2025-09-18】工作情绪

20:00人间是值得赞美的,生活应加以珍惜。——启功昨晚临下班前,又下了一场大雨。然而我还是没有开车上班。最后我还是投不了球,也做不了其它运动,就这样坐在办公室等何太下班来接我。一等,又是两个小时。加上白天…

Ubuntu 系统部署 LNMP 环境详细教程(附shell脚本一键部署↓) - 指南

Ubuntu 系统部署 LNMP 环境详细教程(附shell脚本一键部署↓) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &q…

详细介绍:7HTMLCSS高级

详细介绍:7HTMLCSS高级pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

详细介绍:【Svelte】后端、前端加载数据的比较与分析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …