在docker构build之后加载Postgres转储

我有一个我想加载docker-compose的dump.sql文件。

泊坞窗,compose.yml:

services: postgres: environment: POSTGRES_DB: my_db_name POSTGRES_USER: my_name POSTGRES_PASSWORD: my_password build: context: . dockerfile: ./devops/db/Dockerfile.db 

我的Dockerfile.db目前非常简单:

 FROM postgres MAINTAINER me <me@me.me> COPY ./devops/db ./devops/db WORKDIR ./devops/db 

我想在某个时候运行一个像psql my_db_name < dump.sql的命令。 如果我从Dockerfile.db运行这样的脚本,问题是脚本在构build之后但在docker构build之前运行,并且数据库尚未运行。

任何想法如何做到这一点?

阅读https://hub.docker.com/_/postgres/ ,“扩展这个镜像”一节解释说,在/docker-entrypoint-initdb.d中的任何.sql将在build之后被执行。

我只需要将我的Dockerfile.db更改为:

 FROM postgres ADD ./devops/db/dummy_dump.sql /docker-entrypoint-initdb.d 

它的工作原理!