【问题标题】:WordPress on Docker: mount database volume AND import existing database?Docker 上的 WordPress:挂载数据库卷并导入现有数据库?
【发布时间】:2020-02-21 15:55:08
【问题描述】:

我想使用 Docker 启动现有 WordPress 安装的本地实例。我该怎么做:

  1. 导入现有数据库...
  2. 并在我的容器重新启动之间保持更改?

我可以分别做每一个,但不能同时工作。如果我使用db_data 卷,那么我似乎从一个干净的数据库开始。如果我不这样做 - 它会从 existing.sql 导入我的数据库,但是我无法在容器重新启动之间保留我的更改。

我的 docker-compose.yml:

version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - ./db/existing.sql:/docker-entrypoint-initdb.d/existing.sql
      - db_data:/var/lib/mysql # this works for task 2 but not task 1
    restart: always
    environment:
      # credentials here

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    volumes:
      - ./code/:/var/www/html/
    environment:
      # credentials here
volumes:
  db_data: {}  # this works for task 2 but not task 1

我需要使用--volumes-from 标志作为described in the docs here 吗?

【问题讨论】:

标签: wordpress docker docker-compose


【解决方案1】:

为转储创建一个附加卷,例如有一个本地目录 db/dump/ 用于 SQL 转储:

      - ./db/existing.sql:/docker-entrypoint-initdb.d/existing.sql
      - ./db/dump/:/sql                                                   
      - db_data:/var/lib/mysql # this works for task 2 but not task 1

将您要导入的 SQL 转储复制到 db/dump/import_this.sql。 接下来,像这样附加到您的 MySQL 数据库容器:

docker exec -it "YOUR_CONTAINER_ID" mysql -uroot -p YOUR_DB_NAME

这将打开 MySQL 命令行,您现在可以在其中获取文件:

source /sql/import_this.sql

或者,您可以获取/docker-entrypoint-initdb.d/existing.sql,但我通常更喜欢有一个目录而不是一个文件。

现在您已经将导入的数据库持久化了。

【讨论】:

  • 酷,谢谢,马上试试!那么没有手动步骤就没有办法只使用docker-compose.yml 吗?
  • 不幸的是,我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多