Pie*_*ter 3 mysql wordpress docker docker-compose
我正在尝试使用 Docker 创建一组容器(wordpress 和 MySQL),这将有助于我使用 Wordpress 进行本地开发。当我们运行一个实时数据库时,我想将一个 dump.sql 文件挂载到 Docker mysql 容器中。下面是我的 .yml 文件。
version: '2'
services:
db:
image: mysql:latest
volumes:
- ./data:/docker-entrypoint-initdb.d #./data holders my dump.sql file
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
volumes:
- ./wp-content/themes/portalV3:/var/www/html/wp-content/themes/portalV3
- ./wp-content/plugins:/var/www/html/wp-content/plugins
- ./wp-content/uploads:/var/www/html/wp-content/uploads
Run Code Online (Sandbox Code Playgroud)
一切正常,但大约 10 秒后,用于 mysql 的 docker 容器崩溃。通过日志,我收到以下错误:
/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/dump.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR: Can't initialize batch_readline - may be the input source is a directory or a block device.
Run Code Online (Sandbox Code Playgroud)
仔细检查后(附加到重新启动的 mysql 容器),我发现我的 dump.sql 文件确实没有传输到容器中,但是在 /docker-entrypoint-initdb.d 中创建了一个同名的文件夹。
谁能帮助我理解如何让 docker-compose 复制我的 dump.sql 文件并导入到数据库中?
干杯,
彼得
您使用 docker-entrypoint-initdb.d 遇到的问题是,因为您的源“数据”是一个目录而不是文件,目标文件 (docker-entrypoint-initdb.d) 也必须是一个目录。反之亦然。
所以要么做
volumes:
- ./data:/docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
或者
volumes:
- ./data/mydump.sql:/docker-entrypoint-initdb.d/mydump.sql
Run Code Online (Sandbox Code Playgroud)