docker compose mysql初始化sql未执行

ipakzgxi  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(1222)

我正在尝试设置mysql docker容器并执行initsql脚本。不幸的是,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

u7up0aaq

u7up0aaq1#

这个 docker-entrypoint-initdb.d 在创建(示例化)容器时,文件夹只运行一次,因此实际上您必须执行 docker-compose down -v 为下次运行重新激活。
如果你想随时添加sql文件,你可以在这里看一个专门的mysql docker镜像。。。http://ivo2u.nl/o4

ee7vknir

ee7vknir2#

许多容器化应用程序,尤其是有状态的应用程序,都有一种运行方式 init 脚本(比如这里的sql脚本),它们应该只运行一次。
而且由于卷是有状态的,因此对于容器来说,卷是是否运行 init 重新启动容器时是否显示脚本。
与您的情况类似,删除用于绑定装载的文件夹或使用新的命名卷应该重新运行任何操作 init 存在脚本。

相关问题