【问题标题】:Docker Compose - How reference many schemas in one mysql containerDocker Compose - 如何在一个 mysql 容器中引用多个模式
【发布时间】:2017-03-13 04:27:53
【问题描述】:

我正在尝试在一个 mysql 容器中使用两种模式。我有两个连接到两个不同模式的 flyway 服务。 Docker Compose 的 .yml 文件如下所示:

version: '2'

services:

mysqldb:
image: mysql:5.6.26
environment:
  MYSQL_USER: user
  MYSQL_PASSWORD: password
  MYSQL_ROOT_PASSWORD: password
  MYSQL_DATABASE:
  - my
  - my_post
ports:
  - "3306:3306"

 flyway-service1-i:
image: mik/flyway-service
volumes:
 - "../resources/db/migration:/migrations/ro"
depends_on:
 - mysqldb
links:
 - mysqldb
command: migrate -url=jdbc:mysql://mysqldb:3306/mi -user=user -password=password -baselineOnMigrate=true -locations='filesystem:/migrations'

flyway-service2-i:
image: mialk/flyway-post-service
volumes:
 - "../../../service2/src/main/resources/db/migration:/migrations/ro"
depends_on:
 - mysqldb
links:
 - mysqldb
command: migrate -url=jdbc:mysql://mysqldb:3306/mi_post -user=user -password=password -baselineOnMigrate=true -locations='filesystem:/migrations'

但是当我运行命令 sudo docker-compose up 终端时会显示此消息:

错误:撰写文件“./docker-compose.yml”无效,因为: services.mysqldb.environment.MYSQL_DATABASE 包含["mialquiler", "mialquiler_post"],这是一个无效类型,应该是字符串、数字或null

我没有指定 MYSQL_DATABASE 属性,但它不起作用。

有没有办法做到这一点?

【问题讨论】:

    标签: mysql docker docker-compose dockerfile flyway


    【解决方案1】:

    MYSQL_DATABASE 变量允许创建单个数据库,如果指定,则将数据库上的权限授予MYSQL_USER

    您可以使用单个数据库来容纳多个架构。

    如果您需要创建多个数据库,您可能需要运行一些自定义 SQL,因为 flyway 无法为您创建数据库。 flyway test resources include a mysql example

    【讨论】:

    • 非常感谢您的回答@Matt :)。因此,我可以通过这种方式在 .yml 文件中使用 flyway,例如: command: migrate -url=jdbc:mysql://mysqldb:3306/mi_post -user=user -password=password -eschemas=my_post_schema1 - baselineOnMigrate=true -locations='filesystem:/migrations' 谢谢! :D
    猜你喜欢
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2019-11-15
    相关资源
    最近更新 更多