使用docker(v.2)我在我的数据库中建立了一个数据库 docker-compose.yml
:
mysql:
image: mariadb:latest
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 'test'
MYSQL_DATABASE: 'test'
MYSQL_USER: 'test'
MYSQL_PASSWORD: 'test'
这个很好用。在同一容器中创建另一个数据库需要做什么?
2条答案
按热度按时间jjjwad0x1#
这违背了 Docker 的本意。您应该有几个容器使用单个服务(这里是mariadb)。但是如果您想让它们反映相同的状态,您应该使用数据库提供的方法之一(对于mariadb,您可以在这里的官方文档中找到很多)
mariadb提供的本地机制之一是
master-slave replication
官方文件解释得很好。另一个有效的机制是parallel replication
在这里的官方文件中解释并举例说明这些机制需要一点配置。我不会列出整个过程,因为它在官方文档中有很好的解释,还有附加的安全性和可维护性说明。
例如,另一个db-a postgresql数据库可以在许多容器中顺利运行,并且如果您在那些可能共享的示例之间共享一个卷,那么很容易实现负载平衡
pg_data
数据库的(pg_data
目录内的volume
在容器之间共享)。类似的机制可能适用于mariadb。但是如果您真的坚持在一个容器中包含多个服务,那么您可以从多个数据库开始编写bash脚本,并通过
command
在dockerfile或docker compose中。omqzjyyz2#
我知道你想在同一个容器中创建两个数据库,对吗?我认为这违背了微服务架构的原则。
不管怎样,我认为在初始化新示例时这是可能的:
当容器第一次启动时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh、.sql和.sql.gz的文件,这些文件位于/docker entrypoint initdb.d中。文件将按字母顺序执行。
更新mariadb/mysql目录链接下的文件: