【发布时间】:2019-06-18 07:36:47
【问题描述】:
我有以下docker-compose.yml 文件:
version: '3'
services:
postgres:
image: postgres
container_name: postgres
ports:
- "5431:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=anime
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
此配置启动 Postgres 数据库。在卷中我定义了 init.sql,它应该建立一个表:
CREATE TABLE anime (
anime_id INT PRIMARY KEY,
title TEXT
);
然后,我想用 CSV 文件中的数据填充 Postgres 数据库。
我尝试向 docker-compose 添加另一个卷:
- ./preload.sql:/preload/preload.sql
使用该脚本:
copy anime FROM 'docker/data/AnimeList.csv' DELIMITER ',' CSV HEADER;
CSV 文件位于data 文件夹中,与docker-compose.yml 处于同一级别。
但它不起作用。数据库已正确创建,但没有表和数据。当我连接到 Docker 容器时,运行'psql 命令并尝试获取anime 表,我收到以下错误:
Did not find any relation named "anime".
我的问题是:如何在 docker-compose 中预加载带有 CSV 数据文件的 Postgres 容器?
【问题讨论】:
-
你有什么错误吗?你能分享你正在使用的最终 docker-compose.yml 文件吗?
-
请不要将解决方案添加到您的问题中。使用该解决方案添加答案并接受该答案。否则你的问题将保持“开放”
标签: postgresql docker docker-compose