Tom*_*lin 6 postgresql docker docker-compose
我有一个包含两个主要Java应用程序的项目,这些应用程序使用八个postgres数据库,那么docker-compose中是否有一种方法可以构建八个不同的数据库,以便每个数据库具有不同的所有者和密码?我什至可以在docker-compose中做到这一点吗?
例如:
services:
postgresql:
build: db/.
ports:
- "5432:5432"
environment:
- POSTGRES_DB=database1
- POSTGRES_USER=database1
- POSTGRES_PASSWORD=database1
Run Code Online (Sandbox Code Playgroud)
我知道我可以将所有.sql文件放入docker-entrypoint-initdb.d中,而postgres会自动将它们生成,但是如何声明什么.sql文件进入哪个数据库?
Tnx,汤姆
Ric*_* P. 13
通常当我在 docker 项目中需要多个数据库时,它是一个测试数据库。我发现简单地启动第二个 docker 容器更容易,而不必担心脚本或卷分离。主要技巧是不要与默认端口(例如 postgres 的 5432)发生冲突,这样就可以了。然后docker-compose
可以像这样简单:
version: '3.0'
services:
db:
image: postgres
environment:
- POSTGRES_DB
- POSTGRES_USER
- POSTGRES_PASSWORD
ports:
- ${POSTGRES_DEV_PORT}:5432
volumes:
- app-volume:/var/lib/postgresql/data
db-test:
image: postgres
environment:
- POSTGRES_DB
- POSTGRES_USER
- POSTGRES_PASSWORD
ports:
- ${POSTGRES_TEST_PORT}:5432
# Notice I don't even use a volume here since I don't care to persist test data between runs
volumes:
app-volume: #
Run Code Online (Sandbox Code Playgroud)
根据这个Github 问题,可能需要使用bash脚本来实现多个数据库,而这些bash脚本必须在Dockerfile中传递
编辑:
要创建多个数据库,可以使用以下脚本:
https://github.com/mrts/docker-postgresql-multiple-databases
要么
https://github.com/MartinKaburu/docker-postgresql-multiple-databases
这表明您必须克隆上述git repos之一并将其作为卷安装到:/docker-entrypoint-initdb.d,然后才能使用以下命令传递多个数据库名称:POSTGRES_MULTIPLE_DATABASES变量
好吧-看看这个Github项目:https : //github.com/mrts/docker-postgresql-multiple-databases
根据官方的postgres docker镜像文档
如果要在从该映像派生的映像中进行其他初始化,请在/docker-entrypoint-initdb.d下添加一个或多个* .sql,*。sql.gz或* .sh脚本(必要时创建目录) )。入口点调用initdb创建默认的postgres用户和数据库后,它将运行任何* .sql文件并提供在该目录中找到的所有* .sh脚本,以在启动服务之前进行进一步的初始化。
您会在该存储库上找到可以使用的准备好的脚本。
归档时间: |
|
查看次数: |
10223 次 |
最近记录: |