Docker:如何在Directory中使用SQL文件

时间:2017-06-14 00:27:09

标签: mysql sql docker docker-compose dockerfile

我正在尝试使用Docker在本地打开一个Wordpress网站。

以下是此容器的docker-compose.yml文件:

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

Dockerfile:

FROM orchardup/php5
ADD . /code

在终端中,我输入docker-compose up -d。然后我可以访问localhost:8080的网站,但它不是真正的网站 - 它只是一个Wordpress模板。我猜我必须以某种方式将.sql文件合并到目录中?我该怎么做呢?我是否需要在.yml文件中指定它?

2 个答案:

答案 0 :(得分:2)

只需添加一个卷映射即可将本地文件夹映射到/docker-entrypoint-initdb.d容器文件夹,例如:./init-db:/docker-entrypoint-initdb.d。该文件将在首次容器启动时加载。

考虑以下docker-compose.yml:

  1. 将您的sql文件拖放到/path-to-sql-files-on-your-host主机文件夹中)
  2. 运行docker-compose down -v销毁容器和卷
  3. 运行docker-compose up来重新创建它们。

-

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
       - /path-to-sql-files-on-your-host:/docker-entrypoint-initdb.d
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

答案 1 :(得分:0)

根据MySQL-Docker documentation,您有两个选择。

  1. 在运行“ db”泊坞窗后,只需使用mysql客户端连接到它,然后导入.sql转储即可。阅读“从MySQL命令行客户端连接到MySQL”部分。如果您不使用docker,则可以像这样mysql fooDB < fooDB_dump.sql还原此备份。与docker命令类似。

  2. Docs,“初始化一个新实例”说:“ ...它将执行在/docker-entrypoint-initdb.d中找到的扩展名为.sh,.sql和.sql.gz的文件”看起来更像您想要的。只需将.sql文件复制到docker映像中的该位置,然后它将自动解析它。