我是从这里开始的: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文件的同一文件夹中有转储)。
答案 0 :(得分:2)
如果bash
进入MySQL容器并且创建了数据库并导入了数据,那么您的第一个问题就是修复。
关于第二个I'm not able to login from within phpMyAdmin
并且因为我没有看到您docker-compose.yml
上列出的服务,我建议按照phpmyadmin上的文档安装和配置该服务。非常重要的是读取ENV变量here,因为您需要设置它们以允许phpMyAdmin容器从/向MySQL容器读/写。
Ex(来自here):
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
- PMA_ARBITRARY=1
restart: always
ports:
- 8080:80
volumes:
- /sessions
你在Dockerfile上遗漏了这个部分,或者你可能还没知道Docker是如何工作的,这导致我建议你阅读一下它。
<强>更新强>
由于答案与phpMyAdmin不再相关,现在在Windows下转为docker volumes
,这里是更新后的答案。
在Windows上装载卷的工作方式与在Linux中一样,例如:
php-fpm:
build: docker/php-fpm
volumes:
- ./sources:/data/www
上面的服务定义适用于两种操作系统,您可以尝试here。我正在使用最新的Docker for Windows(Beta标记为RCXX)
现在,针对您的案例的解决方法可以是安装具有.sql
转储文件的主机卷,或者使用Docker中的COPY
命令将文件移动到容器内,然后使用{{ 1}}或bash脚本将其导回DB。
答案 1 :(得分:2)
您可以这样做的一种方法是在使用官方mysql映像时将带有转储的文件夹挂载到目录/docker-entrypoint-initdb.d/
中。
对于在团队中工作而言,这是一个非常好的解决方案,每个人都应该使用相同的基础数据库。您可以在documentation.中了解更多相关信息。这只会在首次运行容器时发生。如果删除容器,它将进行全新导入。这也是它的用途。
更常见的是,我会像其他一些答案那样建议:
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