[英]Volume mount in docker for postgres data
我正在尝试使用 docker 将数据插入到 postgres 中。
我的代码中有一个名为 data 的文件夹,其中包含insert
命令和一个名为init.sql的文件。
我想将文件夹数据中存在的 init.sql 中的数据插入init.sql
中存在的表中。
version: '3.1'
services:
postgres:
image: postgres:11.6-alpine
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_PORT: 5432
volumes:
- ./tables:/docker-entrypoint-initdb.d/
- ./data:/var/lib/postgresql/data
volumes:
data: {}
我正在尝试这个,但我得到了错误:
initdb:目录“/var/lib/postgresql/data”存在但不为空
我想我没有使用正确的用例,我是 docker 组合的新手。
但是有什么办法可以让我的用例得到满足吗?
这是由于命名卷的volumes
语法使用不当造成的。
为了挂载一个命名卷,你必须像这样使用它的名字:
volumes:
- data:/var/lib/postgresql/data
如果您的语法以.
那么它将是来自您的主机的绑定挂载。
volumes:
- ./data:/var/lib/postgresql/data
上面的代码是相对于您的docker-compose.yml所在位置安装主机文件夹data
。
这个docker-compose.yml应该符合您的预期。
version: '3.1'
services:
postgres:
image: postgres:11.6-alpine
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_PORT: 5432
volumes:
- ./tables:/docker-entrypoint-initdb.d/
- data:/var/lib/postgresql/data
volumes:
data:
如果由于某种原因已经创建了您的卷,并且数据库为空或没有数据库,那么您的第一步应该运行:
docker-compose down --volumes
从文档中:
-v, --volumes Remove named volumes declared in the `volumes`
section of the Compose file and anonymous volumes
attached to containers.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.