【发布时间】:2017-06-27 11:25:56
【问题描述】:
我的 docker-compose 脚本成功运行 mysql/mariadb 服务,并将包含数据库架构的“init.sql”脚本复制到“/docker-entrypoint-initdb.d”。但是,sql 脚本永远不会像应有的那样执行according to the docs。
没有错误,日志中没有任何内容。我检查了 sql 文件是否复制到容器中的正确位置。我检查了脚本在空数据库上运行时没有错误。
我错过了什么?如果脚本被执行(并且由于某种原因什么也没做),它甚至在日志中可见吗?
(编辑: docker-compose 版本:1.8.1,图像 mariadb:10.1.21)
# docker-compose.yml
version: '2'
volumes:
data-volume: {}
services:
mysql:
image: mariadb
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: pwd
MYSQL_DATABASE: users_db
volumes:
- data-volume:/var/lib/mysql
- ./resources/docker-sql/init.sql:/docker-entrypoint-initdb.d/init.sql
backend:
image: myapp
ports:
- "8000:80"
depends_on:
- mysql
links:
- mysql
【问题讨论】:
-
根据
docker-entrypoint.sh的来源(应该执行init.sql的脚本),如果执行,日志中应该有一行(第154 行)。你能添加docker logs的输出吗?此外,您的脚本只会在容器第一次启动时执行(第 76 行)!您必须在两次尝试之间删除它。 -
哦,我确实不得不删除容器。谢谢!
docker-compose stop,docker-compose rm,docker-compose up. -
你们谁来写一个正式的答案? :)
-
请注意,没有打印出与实际运行的 sql 脚本相关的日志。也许有一个详细的选项。但不再是问题了。如果@fzgregor 没有写出答案,我明天再写。
标签: mysql docker docker-compose mariadb