Docker Postgres Container中的.sql文件未自动执行

时间:2018-01-17 04:17:32

标签: postgresql docker docker-compose

我有一个从.sql命令创建的pg_dump文件,我想在Docker容器中自动插入到PostgreSQL实例中。我使用volume将.sql文件挂载到docker-entrypoint-initdb.d目录中。我的Docker YML文件如下所示:

postgres: 
 environment: 
  - POSTGRES_USER=user
  - POSTGRES_PASSWORD=pw
  - POSTGRES_DB=db
 volumes:
  - ./out.sql:/docker-entrypoint-initdb.d/out.sql
 image: "postgres:9.6"

由于sql文件已挂载到docker-entrypoint-initdb.d,我希望它在运行docker-compose -f myyml.yml up -d时自动运行并插入我的数据。它不会执行。但是,当我在容器中运行bash时,我确实看到了.sql文件。此外,我可以使用类似于psql -U user -a -f out.sql的命令手动运行该文件。为什么在运行docker-compose时它不会自动运行?

2 个答案:

答案 0 :(得分:1)

我认为您可以在docker compose中添加command,并按照psql -U user -a -f out.sql

进行操作
postgres: 
 environment: 
  - POSTGRES_USER=user
  - POSTGRES_PASSWORD=pw
  - POSTGRES_DB=db
 volumes:
  - ./out.sql:/docker-entrypoint-initdb.d/out.sql
 image: "postgres:9.6"
 command: bash -c "psql -U user -a -f out.sql"

注意:如果使用命令bash -c不起作用,请将其删除

答案 1 :(得分:0)

经过大量的试验和错误,我意识到我需要删除所有图像和容器并重新启动。我跑了docker-compose myyml.yml down然后重新开始工作。