将字典文件添加到postgresql docker容器中

时间:2016-03-12 08:49:52

标签: postgresql docker full-text-search

我正在使用postgresql docker image

https://hub.docker.com/_/postgres/

要根据http://www.postgresql.org/docs/9.5/interactive/textsearch-dictionaries.html#TEXTSEARCH-SYNONYM-DICTIONARY使用同义词词典改善我的全文搜索体验,我必须将文件放入$SHAREDIR/tsearch_data,该文件恰好是泊坞窗图片中的文件夹/usr/share/postgresql/9.5/tsearch_data

如何在最大限度地减少其他用户的设置负担的同时做到这一点? (当然我总是可以使用docker exec -it bash手动添加该文件)

  1. 创建自己的docker图像 https://hub.docker.com/_/postgres/ 在这种情况下,如何在保留所有其他设置步骤的同时将文件添加到该图像中?
  2. 也许Postgresql-Image的init脚本对我有帮助?

    If you would like to do additional initialization in an image
    derived from this one, add one or more *.sql or *.sh scripts
    under /docker-entrypoint-initdb.d 
    

    https://hub.docker.com/_/postgres/,“如何扩展此图片”)

1 个答案:

答案 0 :(得分:1)

因此,使用Docker,您可以在一个全新的Dockerfile中使用FROM postgres,它将使用该图像中的所有内容,但会在其上添加新的指令/图层。因此,您可以添加一个新图层,将此文件复制到图像中,如下所示:

COPY tsearch_data /usr/share/postgresql/9.5/tsearch_data

根据COPYbest practices for writing Dockerfiles,您应该更喜欢ADD

这是非常明显的,但是一旦你从这个Dockerfile构建新图像(例如docker build -t=myPostgres .) - 确保你的tsearch_data文件与Dockerfile在同一个目录中 - 您的新映像可以推送到Docker Hub(或私有注册表,或tarball,或您使用的任何分发方法),新的Postgres映像现在容纳您的tsearch_data文件,同时保留原始Dockerfile中的所有内容