当前位置: 首页 > 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.gsyq.cn/news/8529.html

相关文章:

  • [MCP][07]logging和progress等功能说明
  • 端口命令
  • c-store发送dcm文件超时
  • 【2025-09-19】连岳摘抄
  • MAUI和Android、IOS的互操作之IOS篇
  • 【Java】Hashtable讲解
  • 【JAVA】TreeSet讲解
  • 批判 vs 审判
  • ctfshow web入门 SSRF
  • C#中避免GC压力和提高性能的8种技术
  • UNIX网络编程笔记:共享内存区和远程过程调用 - 指南
  • 函数内联
  • G. Chimpanzini Bananini
  • ERP和MES、WMS、CRM,到底怎么配合 - 智慧园区
  • 底层
  • WPF 视图缩略图控件(支持缩放调节与拖拽定位)
  • javaScript(WebAPI) - 教程
  • es中的端点
  • es中的数据类型
  • 03作业
  • 软工作业个人项目
  • YOLO进阶提升 6模型训练与测试
  • 解码C语言位字段
  • Sql Server 多层嵌套事务的执行结果
  • es入门
  • 02-Media-7-uvc.py 应用软件解码的USB摄像头(UVC)捕获视频并显示的程序
  • YOLO入门理解 评估指标
  • [ICPC 2024 Yokohama R] Peculiar Protocol
  • The 2025 ICPC Asia East Continent Online Contest (II)(C,D,E,H,I)
  • 实用指南:微信小程序-6-页面布局和事件绑定以及页面跳转