[英]How to start a mysql docker container with a dump.sql file in a single command without using docker-compose
[英]Docker-compose on Windows 7: how to import a db dump when using a yaml file?
我从这里开始: https : //docs.docker.com/compose/wordpress/
我在Windows 7上运行良好
version: '2'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
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_PASSWORD: wordpress
phpmyadmin:
container_name: phpmyadmin
depends_on:
- db
image: phpmyadmin/phpmyadmin:latest
environment:
MYSQL_ROOT_PASSWORD: "mysql_root_password"
PMA_ARBITRARY: 1
restart: always
ports:
- 8080:80
volumes:
- /sessions
volumes:
db_data:
我的问题是:如何从Windows Machime导入db-dump? 我的目标是在生产的转储上本地工作(我已经将转储放在docker-compose.yaml文件的同一文件夹中)。
如果您bash
到MySQL容器中并且创建了数据库并导入了数据,那么您的第一个问题就是解决。
关于第二个, I'm not able to login from within phpMyAdmin
并且因为我没有在docker-compose.yml
上看到列出的服务, docker-compose.yml
我建议根据phpmyadmin上的文档进行安装和配置。 非常重要的一点是在此处阅读ENV变量,因为您需要对其进行设置,以便允许phpMyAdmin容器从MySQL容器读取/向MySQL容器写入。
例如(从这里开始 ):
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
- PMA_ARBITRARY=1
restart: always
ports:
- 8080:80
volumes:
- /sessions
您在Dockerfile上缺少这部分,或者也许您还没有完全了解Docker的工作方式,这促使我建议您阅读一下。
UPDATE
由于答案不再与phpMyAdmin有关,现在变成Windows下的docker volumes
,因此这里是更新的答案。
Windows上的安装卷与Linux中的安装卷相同,例如:
php-fpm:
build: docker/php-fpm
volumes:
- ./sources:/data/www
上面的服务定义在两个OS上都可以使用,您可以在此处尝试。 我正在使用Windows的最新Docker(Beta标记为RCXX)
现在,针对您的情况的解决方法可能是在主机卷上安装了.sql
转储文件,或者使用Docker的COPY
命令将文件移至容器内,然后使用RUN
或bash脚本将其导入回数据库。
一种执行此操作的方法是,使用官方的MySQL映像时,将带有转储的文件夹安装到目录/docker-entrypoint-initdb.d/
。
对于每个人都应该在同一个基础数据库上工作的团队来说,这是一个很好的解决方案。 您可以在文档中阅读有关此内容的更多信息。 这只会在容器的第一次运行中发生。 如果删除容器,它将重新导入。 它也有它的用途。
我经常会像其他答案所建议的那样做:
docker-compose exec db mysql -u root -p DB_NAME < DUMP_FILE_IN_CONTAINER
需要特别注意的是,您仍然需要在容器中挂载转储文件! 它不适用于主机上的文件!
您不一定需要安装整个文件夹(尽管您可以安装-上述文件夹中的所有脚本都将按字母顺序执行)。 您可以像这样挂载转储文件:
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
- ./path/to/dump/on/host.sql:/docker-entrypoint-initdb.d/anyname.sql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.