Docker Compose - 如何在一个 mysql 容器中引用多个模式
Posted
技术标签:
【中文标题】Docker Compose - 如何在一个 mysql 容器中引用多个模式【英文标题】:Docker Compose - How reference many schemas in one mysql container 【发布时间】: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 属性,但它不起作用。
有没有办法做到这一点?
【问题讨论】:
【参考方案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以上是关于Docker Compose - 如何在一个 mysql 容器中引用多个模式的主要内容,如果未能解决你的问题,请参考以下文章
跨多个 docker-compose 项目的共享卷 [重复]
Docker部署Docker-compose部署mysql容器及创建数据库失败问题
Docker部署Docker-compose部署mysql容器及创建数据库失败问题