使用docker compose时,docker-entrypoint-initdb.d中的文件永远不会被执行

weixin_38060336 2019-09-12 02:01:03
我在Windows 10上使用Docker Toolbox 我可以通过http://192.168.99.100:8000成功访问php部分,我一直在使用mariadb部分,但仍然有几个问题 我有一个sql文件作为/mariadb/initdb/abc.sql所以我应该被复制到/docker-entrypoint-initdb.d,创建容器后我使用docker-compose exec mariadb来访问容器,有文件作为/docker-entrypoint-initdb.d/abc.sql,但文件永远不会执行,我也测试过手动将sql文件导入容器,这是成功的,所以sql文件是有效的 我不太了解数据文件夹映射,以及如何使文件夹与容器同步,我总是在使用docker-compose up -d重新创建容器时收到警告 警告:服务“mariadb”正在使用上一个容器中的卷“/ var / lib / mysql”.主机映射“/…/mariadb/data”无效.删除现有容器(使用docker-compose rm mariadb)以使用重新创建数据库…完成 问题 >如何获取/docker-entrypoint-initdb.d中的sql文件?>使用mariadb容器映射数据文件夹的正确方法是什么? 请指导谢谢 这是我的docker-compose.yml version: "3.2" services: php: image: php:7.1-apache container_name: web restart: always volumes: - /.../php:/var/www/html ports: - "8000:80" mariadb: image: mariadb:latest container_name: db restart: always environment: - MYSQL_ROOT_PASSWORD=12345 volumes: - /.../mariadb/initdb:/docker-entrypoint-initdb.d - /.../mariadb/data:/var/lib/mysql ports: - "3306:3306"
...全文
2046 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38078099 2019-09-12
  • 打赏
  • 举报
回复 1
对我来说,问题是Docker没有清理以前运行的挂载卷. 做一个: docker volume ls 将列出任何卷,如果以前存在,则在卷上运行’rm’命令将其删除. 如docker mysql docks所述,’/docker-entrypoint-initdb.d’文件夹中的脚本仅在容器第一次运行时才会被评估,如果前一个卷保留,它将不会运行脚本. 至于映射,您只需将脚本文件夹挂载到映像中的“/docker-entrypoint-initdb.d”文件夹: volumes: - ./db/:/docker-entrypoint-initdb.d 我在一个名为db的文件夹中有一个脚本文件,相对于我的docker-compose文件.

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧