当我用docker创建MariaDB数据库时,我想运行一个带有ddl和dml的sql文件。我已经在我的docker-compose文件的根目录中指定了这个文件,如下所示。
volumes:
- "./scripts/init.sql:/docker-entrypoint-initdb.d/1.sql"
然而,当我运行docker-composite up命令时,它只创建了没有表和数据的数据库,我到底应该如何填充数据库。
- Edit* 我用一个小的sql文件尝试了它,只包含这个ddl,仍然没有创建任何东西。
CREATE TABLE `ALARM_A` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version` bigint(20) NOT NULL,
`creation_date` datetime NOT NULL,
`is_new` bit(1) NOT NULL,
`order_id` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
)
- 第二次编辑 * 我对我的docker-compose做了一点修改,现在它创建了表,但是,它只完成了一部分,而不是59个表,我得到了3个。我尝试删除容器并再次创建,以及再次构建,但我得到了相同的结果,这是我的docker-compose文件。
version: "3.8"
services:
phedon-service:
build: .
restart: always
ports:
- "8080:8080"
networks:
- phedon
depends_on:
- mysql
env_file:
- .env
mysql:
image: mariadb:10.6
container_name: mariadb
volumes:
- container-volume:/var/lib/mysql
- ./dump.sql:/docker-entrypoint-initdb.d/dump.sql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: name_db
ports:
- "3307:3307"
networks:
phedon:
volumes:
container-volume:
- 更新 *
我在db服务部分添加了这个
volumes:
- container-volume:/var/lib/mysql
- ./dump.sql:/docker-entrypoint-initdb.d/dump.sql
在我的创作文件的底部
volumes:
container-volume:
确保在运行docker build命令之前删除卷,之后您可以完美地合成。
1条答案
按热度按时间6ljaweal1#
如果我在
scripts/init.sql
中有您的示例SQL脚本,并且我使用以下docker-compose.yaml
:然后在I
docker-compose up
之后,等待初始化完成,我看到: