加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在docker中管理数据库模式的“正确”方法

发布时间:2020-12-16 03:27:35 所属栏目:安全 来源:网络整理
导读:我正在开发一个包含Java Web应用程序和postgresql数据库的开源应用程序.理想情况下,它可以部署,类似于shipyard quickstart中详述的过程: 运行仅数据容器 运行数据库容器 运行应用程序容器 是否有建议的时间来设置数据库架构?我正在考虑使数据库映像的Docke

我正在开发一个包含Java Web应用程序和postgresql数据库的开源应用程序.理想情况下,它可以部署,类似于shipyard quickstart中详述的过程:

>运行仅数据容器
>运行数据库容器
>运行应用程序容器

是否有建议的时间来设置数据库架构?我正在考虑使数据库映像的Dockerfile在构建时创建模式但是此时postgres显然没有运行.

最佳答案
我们在工作的地方使用Postgres和Docker,最后我们做了以下工作:

>从官方的Postgres仓库中复制Dockerfile,这样您就可以制作自己的图像了.
>修改docker-entrypoint.sh(https://github.com/docker-library/postgres/blob/8f80834e934b7deaccabb7bf81876190d72800f8/9.4/docker-entrypoint.sh),这是容器启动时调用的内容.

在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变量告诉它使用哪个模式.

关于代码的一些注意事项:

>我们需要使用私钥而不是用户凭据来重构从Github中提取内容.
> ./docker-entrypoint-initdb.d目录是docker-entrypoint.sh将查找为数据库运行init脚本的位置.您可以根据需要将文件移动到该位置.如果从Github下载不适用,请执行此操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读