Docker Compose - 如何在一个mysql容器中引用许多模式

时间:2016-10-31 03:38:48

标签: mysql docker docker-compose dockerfile flyway

我试图在两个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时,终端会显示以下消息:

错误:撰写文件&#39; ./ docker-compose.yml&#39;无效,因为: services.mysqldb.environment.MYSQL_DATABASE包含[&#34; mialquiler&#34;,&#34; mialquiler_post&#34;],这是一个无效的类型,它应该是字符串,数字或空 < / p>

我在没有指定MYSQL_DATABASE属性的情况下进行了交易,但它没有工作。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

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

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

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