You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除Docker容器后MySQL数据库是否丢失及恢复方法咨询

删除Docker容器后MySQL数据库是否丢失及恢复方法咨询

嘿,我来帮你理清楚这个问题~

首先,从你遇到的情况——重新启动容器后WordPress进入首次安装流程——来看,你的MySQL数据库确实已经丢失了。原因很简单:你的docker-compose.yml里的db服务没有配置数据持久化卷。

默认情况下,Docker容器里的所有数据都是存储在容器自身的文件系统里的,当你选择“Delete forever”删除容器时,容器的所有内容(包括MySQL存储的数据库文件)都会被彻底删除。重新用docker compose up -d启动时,会创建一个全新的MySQL容器,自然就是空数据库,所以WordPress会引导你走首次安装流程。

那有没有办法恢复呢?这得分情况:

  • 如果你之前没有对数据库做过任何备份(比如用mysqldump导出过数据,或者用docker cp把容器里的/var/lib/mysql目录拷贝到宿主机,或者通过phpMyAdmin导出过数据库),也没有用docker commit把MySQL容器保存为镜像的话,很遗憾,数据基本没法恢复了。
  • 如果你有上述任何一种备份,那可以通过对应的方式恢复:比如把备份的SQL文件导入新的MySQL容器,或者把之前拷贝的/var/lib/mysql目录挂载到新容器里。

为了避免以后再出现这种情况,你需要给db服务添加数据持久化配置。修改你的docker-compose.yml,给db服务加上volumes字段,把MySQL的数据目录映射到宿主机的目录:

services:
# mysql
  db:
    image: mysql:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: RootPwd
      MYSQL_DATABASE: WPDatabase
      MYSQL_USER: WPUser
      MYSQL_PASSWORD: MySQLPwd
    volumes:
      - ./mysql-data:/var/lib/mysql  # 添加这一行,映射宿主机目录到容器内的数据目录
  
  # phpmyadmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: RootPwd
  
  # wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    ports:
      - '8000:80'  # 补全你原来的端口配置
    volumes:
      - ./wp-content:/var/www/html/wp-content  # 也可以给WordPress添加持久化,保存主题、插件等内容

这样配置后,MySQL的数据会存储在你宿主机当前目录下的mysql-data文件夹里,就算以后删除容器,这个文件夹里的数据依然存在,重新启动容器时就会加载原来的数据库,不会再出现首次安装的情况。

备注:内容来源于stack exchange,提问作者Raymond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:35:33