I have the following docker-compose.yml file:
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
This configuration starts a Postgres database. In volume I defined init.sql, which should set up a table:
CREATE TABLE anime (
anime_id INT PRIMARY KEY,
title TEXT
);
Then, I would like to fill the Postgres database with data from the CSV file.
I tried to add another volume to docker-compose:
- ./preload.sql:/preload/preload.sql
with that script:
copy anime FROM 'docker/data/AnimeList.csv' DELIMITER ',' CSV HEADER;
The CSV file is located in the data folder, on the same level as docker-compose.yml.
But it is not working. The database is created correctly, but it doesn't have the table and data. When I connect to Docker container, run 'psql command and try to get anime table, I get the following error:
Did not find any relation named "anime".
My question is: how to preload the Postgres container with the CSV data file in docker-compose?