My files:
postgresql_data/data/init.table.csv
id,name,completed
1,Buy pen,false
2,Write letter,false
3,Post letter,false
4,Post letter,false
docker-compose.yml
services:
postgres-example-pg-hba:
image: postgres
environment:
- POSTGRES_DB=mydb
- POSTGRES_USER=mysuperuser
- POSTGRES_PASSWORD=mypassword
build:
context: .
ports:
- "5432:5432"
restart: unless-stopped
Dockerfile
FROM postgres:latest
# copy-data.sh
COPY ./postgresql_data ./temp
# Copy init.table.csv to /var/lib/postgresql/data/init.table.csv
# - Wait for postgres build to have created folder: /var/lib/postgresql/data
# - Then on docker-entrypoint-initdb.d/copy-data.sh
COPY ./scripts/copy-data.sh /docker-entrypoint-initdb.d/copy-data.sh
# cp /temp/data/init.table.csv -u /var/lib/postgresql/data/init.table.csv
# Initialise database with a create table
COPY ./scripts/seed.sql /docker-entrypoint-initdb.d/seed.sql
# CREATE TABLE IF NOT EXISTS mytable(
# id SERIAL PRIMARY KEY,
# name VARCHAR(500) NOT NULL,
# completed BOOLEAN NOT NULL
# );
# COPY mytable FROM '/var/lib/postgresql/data/init.table.csv' DELIMITER ',' CSV HEADER;
This works with docker-compose up –build
docker-compose up -d --build
docker exec -it dockerise-postgres-postgres-example-pg-hba-1 psql -U mysuperuser -d mydb
select * from mytable;
output
id | name | completed
----+--------------+-----------
1 | Buy pen | f
2 | Write letter | f
3 | Post letter | f
4 | Post letter | f
(4 rows)
This does NOT work when I do docker build . first then docker-compose up
docker-compose down
docker image rm postgres
docker build .
docker-compose up
docker exec -it dockerise-postgres-postgres-example-pg-hba-1 psql -U mysuperuser -d mydb
select * from mytable;
mydb=# select * from mytable;
ERROR: relation “mytable” does not exist
LINE 1: select * from mytable;