用Docker Compose一键部署WordPress + MySQL

06-01 1506阅读

一、为什么需要Docker Compose?

假设你要同时启动一个Web应用和一个数据库,手动操作可能是这样的:

  1. 先启动数据库容器,设置密码、挂载数据卷。

  2. 再启动Web容器,配置环境变量链接数据库。

  3. 重复操作时,每次都要敲一堆命令,容易出错。

Docker Compose 就像一份“菜单”,把多个容器的配置写在一个文件里,一键启动所有服务。

它的核心价值:告别碎片化命令,用声明式配置管理多容器应用!

二、实战:用Docker Compose部署WordPress

1. 准备工作

  • 安装Docker和Docker Compose(官方安装指南)。

  • 创建一个项目目录:

    mkdir my-wordpress && cd my-wordpress

     用Docker Compose一键部署WordPress + MySQL

    2. 编写docker-compose.yml

    创建一个文件 docker-compose.yml,内容如下:

    version: '3.8'  
    services:
      # 数据库服务
      db:
        image: mysql:8.0
        volumes:
          - db_data:/var/lib/mysql  # 持久化数据
        environment:
          MYSQL_ROOT_PASSWORD: 1qaz@WSX  # 设置root密码
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wpuser
          MYSQL_PASSWORD: wppass
        restart: always  # 容器崩溃自动重启
        networks:
          - wp-network
      # WordPress服务
      wordpress:
        depends_on:  # 依赖db服务先启动
          - db
        image: wordpress:latest
        ports:
          - "8000:80"  # 映射本地8000端口到容器80端口
        environment:
          WORDPRESS_DB_HOST: db:3306  # 通过服务名连接数据库
          WORDPRESS_DB_USER: wpuser
          WORDPRESS_DB_PASSWORD: wppass
          WORDPRESS_DB_NAME: wordpress
        volumes:
          - wp_data:/var/www/html  # 持久化网站数据
        restart: always
        networks:
          - wp-network
    # 定义网络和数据卷
    volumes:
      db_data:  # 数据库数据卷
      wp_data:  # WordPress数据卷
    networks:
      wp-network:  # 自定义网络,容器间通过服务名通信

    代码解析:

    • services:定义两个服务 db(MySQL)和 wordpress。

    • volumes:挂载数据卷,即使容器删除,数据也不会丢失。

    • networks:自定义网络,让两个容器通过服务名(如 db)直接通信。

    • depends_on:确保数据库先启动,再启动WordPress。

       三、一键启动所有服务

      # 进入项目目录,执行命令:
      docker-compose up -d

      用Docker Compose一键部署WordPress + MySQL

       查看运行状态:

      docker-compose ps

      用Docker Compose一键部署WordPress + MySQL

       四、访问你的WordPress网站

       打开浏览器访问:http://你的服务器IP:8000,你会看到WordPress安装界面!

      按照提示设置站点标题、管理员账号,就像使用普通WordPress一样。(这个是安装好的)

      用Docker Compose一键部署WordPress + MySQL

      为什么能直接访问数据库?

      • WordPress容器通过服务名 db 连接到MySQL,不需要知道IP。

      • 这一切都由Docker Compose自动处理!

         五、管理服务:常用命令汇总

        # 停止并删除所有容器(保留数据卷)
        docker-compose down

        用Docker Compose一键部署WordPress + MySQL

        # 停止容器但不删除
        docker-compose stop
        # 开启容器
        docker-compose start

        用Docker Compose一键部署WordPress + MySQL

        # 查看容器日志(调试必备)
        docker-compose logs -f wordpress
        # 进入数据库容器执行命令
        docker-compose exec db mysql -u root -p
        # 输入密码 1qaz@WSX
        # 更新配置后重新部署
        docker-compose up -d --force-recreate

        用Docker Compose一键部署WordPress + MySQL

        六、自定义配置:修改端口或密码

        如果想换端口或修改数据库密码:

        1. 编辑 docker-compose.yml 中的 ports 或 environment 部分。

        2. 重新运行 docker-compose up -d。

         将WordPress端口改为8080:

        用Docker Compose一键部署WordPress + MySQL

        用Docker Compose一键部署WordPress + MySQL

        用Docker Compose一键部署WordPress + MySQL

        七、常见问题与解决

        1. 端口冲突(比如8000被占用)

        • 解决:修改 docker-compose.yml 中的 ports,例如改为 "8080:80"。

        • 检查端口占用:

          lsof -i :8000

          2. 数据库连接失败 

          • 检查日志:

            docker-compose logs db
            • 确保环境变量:

              WordPress的 WORDPRESS_DB_* 变量必须与MySQL的 MYSQL_* 变量匹配。

              3. 数据持久化验证

              • 删除容器后数据是否会丢失?

                执行 docker-compose down 后再次 docker-compose up -d,数据依然存在,因为用了 volumes。

                 用Docker Compose一键部署WordPress + MySQL

                八、总结:Docker Compose是开发者的瑞士军刀

                通过这个实战项目,你已经掌握了:

                • 用YAML文件定义多容器应用。

                • 一键启动、停止、重建服务。

                • 通过数据卷持久化重要数据。

                  试着修改配置,加入新服务,你会发现——容器编排,真的可以像搭积木一样简单! 

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码