Gaf*_*erG 18 mysql docker docker-compose
我在使用docker-compose导入.sql转储文件时遇到问题.我已经关注了docs,显然它将从docker-entrypoint-initdb.d加载.sql文件.但是,当我运行时docker-compose up,sql文件不会被复制到容器中.
我已经尝试用-vf旗帜停止容器,但这也不起作用.我在.yml脚本中做错了吗?
我在我的撰写文件所在的目录database/db-dump /中有dump.sql.
frontend:
image: myimage
ports:
- "80:80"
links:
- mysql
mysql:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: dbuser
MYSQL_PASSWORD: userpass
MYSQL_DATABASE: myimage_db
volumes:
- ./database/db-dump:/docker-entrypoint-initdb.d
Run Code Online (Sandbox Code Playgroud)
Gaf*_*erG 24
经过多次尝试卷设置后,我找到了一种解决方法
我在Dockerfile中使用以下内容创建了另一个基于mysql的图像
FROM mysql:5.6
ADD dump.sql /docker-entrypoint-initdb.d
Run Code Online (Sandbox Code Playgroud)
然后从撰写中删除卷并运行新图像
frontend:
image: myimage
ports:
- "80:80"
links:
- mysql
mysql:
image: mymysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: dbuser
MYSQL_PASSWORD: userpass
MYSQL_DATABASE: myimage_db
Run Code Online (Sandbox Code Playgroud)
这样,转储总是被复制并在启动时运行
Sri*_* Sg 17
这对我有用
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
volumes:
- ./mysql-dump:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: ecommerce
adminer:
image: adminer
restart: always
ports:
- 8080:8080
Run Code Online (Sandbox Code Playgroud)
mysql-dump必须是目录。目录中的所有.sql文件都将被导入。
Mvo*_*hoa 14
这出现在Docker MySQL图像的文档页面上:https://hub.docker.com/_/mysql/
初始化一个新实例
首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化.此外,它会执行文件(可扩展)
.sh,.sql并且.sql.gz是在/docker-entrypoint-initdb.d找到.文件将按字母顺序执行.您可以通过将SQL转储装入该目录 并使用提供的数据提供自定义映像来轻松填充您的mysql服务.默认情况下,SQL文件将导入到MYSQL_DATABASE变量指定的数据库中.
ufu*_*mer 10
Mysql数据库转储schema.sql文件是驻留在/mysql-dump/schema.sql目录和它在初始化过程中创建表。
docker-compose.yml:
mysql:
image: mysql:5.7
command: mysqld --user=root
volumes:
- ./mysql-dump:/docker-entrypoint-initdb.d
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
Run Code Online (Sandbox Code Playgroud)