docker-compose mysql init sql未执行

发布于 2021-02-01 12:55:48

我正在尝试设置一个mysql docker容器并执行init sql脚本。不幸的是SQL脚本没有执行。我究竟做错了什么?

version: '3.3'
services:
  api:
    container_name: 'api'
    build: './api'
  ports:
    - target: 8080
      published: 8888
      protocol: tcp
      mode: host
  volumes:
    - './api:/go/src/app'
  depends_on:
    - 'mysql'
 mysql:
  image: 'mysql:latest'
  container_name: 'mysql'
  volumes:
    - ./db_data:/var/lib/mysql:rw
    - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
  restart: always
  environment:
    MYSQL_USER: test
    MYSQL_PASSWORD: test
    MYSQL_ROOT_PASSWORD: test
    MYSQL_DATABASE: test
  ports:
    - '3306:3306'
volumes:
  db_data:

我执行文件 docker-compose up -d --build

关注者
0
被浏览
454
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    许多容器化的应用程序,尤其是有状态的应用程序,都有一种运行init脚本的方式(例如此处的sql脚本), 并且 它们只能运行 一次

    并且由于它们是有状态的,因此对于容器是否init在容器重新启动时运行脚本而言,卷是事实的来源。

    与您的情况类似,删除用于绑定安装的文件夹或使用新的命名卷应重新运行init存在的所有脚本。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看