我有一个从.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时它不会自动运行?
答案 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
然后重新开始工作。