我正在开发一个由 Java Web 应用程序和 postgresql 数据库组成的开源应用程序。理想情况下,它可以类似于船厂快速入门中详述的过程进行部署:
- 运行纯数据容器
- 运行数据库容器
- 运行应用程序容器
是否有建议的时间来设置数据库模式?我正在考虑让数据库映像的 Dockerfile 在构建时创建模式,但显然此时 postgres 没有运行。
我正在开发一个由 Java Web 应用程序和 postgresql 数据库组成的开源应用程序。理想情况下,它可以类似于船厂快速入门中详述的过程进行部署:
是否有建议的时间来设置数据库模式?我正在考虑让数据库映像的 Dockerfile 在构建时创建模式,但显然此时 postgres 没有运行。
我们在我工作的地方使用 Postgres 和 Docker,我们最终做了以下事情:
在 docker-entrypoint.sh 的顶部,我输入了以下内容:
# Get the schema
url=$(curl -s -u ${GIT_USER}:${GIT_PASSWORD} "${SQL_SCRIPT_URL}" | python -c 'import sys, json; print json.load(sys.stdin)["download_url"]')
curl ${url} > db.sh
chmod +x db.sh
cp db.sh ./docker-entrypoint-initdb.d
这基本上是从 Github 下载一个 shell 脚本,用于初始化数据库的模式。我们这样做是为了管理模式的版本,因此当您启动容器时,您可以通过 ENV 变量告诉它使用哪个模式。
关于代码的一些注释: