当前位置: 首页 > news >正文

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

目录

  • 一、使用 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.hskmm.com/?act=detail&tid=10665

相关文章:

  • 【截稿倒计时、高录用、稳检索】2025年教育创新与信息技术国际学术会议(EIIT 2025)
  • 低代码 + AI 构建智慧校园系统:某高校宿舍报修平台的48小时构建全流程
  • [MCP][07]logging和progress等功能说明
  • 端口命令
  • Microsoft OLE漏洞致远程代码执行安全公告解析
  • 写代码还是写提示词?——Prompt 工程是不是程序员的新技能树
  • c-store发送dcm文件超时
  • 解码C语言模块化编程
  • redis存储漂流瓶信息
  • hashcat高效爆破Wi-Fi密码方法(比aircrack-ng快)
  • 更新到macOS Sequoia后,chrome无法用ip访问192.168.*
  • Typora标题自动显示序号,大纲中也显示序号
  • 【IEEE出版、格林威治大学主办】第六届信息科学与并行、分布式处理国际学术会议(ISPDS 2025)
  • Day18面向对象的基本认识与回顾方法的定义
  • 【2025-09-19】连岳摘抄
  • 【2025-09-18】工作情绪
  • Ubuntu 系统部署 LNMP 环境详细教程(附shell脚本一键部署↓) - 指南
  • 详细介绍:7HTMLCSS高级
  • MAUI和Android、IOS的互操作之IOS篇
  • OBS Studio视频直播录制软件下载安装教程(录屏直播软件下载)
  • 【Java】Hashtable讲解
  • 使用Inno Setup打包安装程序exe流程
  • 攻防世界 web
  • 批判 vs 审判
  • XXL-JOB-源码分享(1)
  • ctfshow web入门 SSRF
  • C#中避免GC压力和提高性能的8种技术
  • ctfshow web入门 爆破
  • 函数内联
  • 7. Innodb底层原理与Mysql日志机制深入剖析