🦾 Hi, folks,
The very first step for creating the Postgres docker image with predefined data is preparing this data.
To prepare a data create a dump using typical command:
pg_dump --dbname=vts --file="/Users/USER_NAME/Desktop/{data_source}-{timestamp}-dump.sql" --column-inserts --create --if-exists
As a suggestion, you could decrease the size of the database by removing unused data on it and running the VACUUM FULL.
Move dump into the same folder with Dockerfile and run the next command to create the image:
docker image build . -t postgres-custom:latest
Dockerfile
Sample of Dockerfile:
FROM postgres:14.3-alpine as dumper
COPY pgdump.sql /docker-entrypoint-initdb.d/
RUN ["sed", "-i", "s/exec \"$@\"/echo \"skipping...\"/", "/usr/local/bin/docker-entrypoint.sh"]
ENV POSTGRES_USER=postgres
ENV POSTGRES_PASSWORD=postgres
ENV PGDATA=/data
RUN ["/usr/local/bin/docker-entrypoint.sh", "postgres"]
# final build stage
FROM postgres:14.3-alpine
MAINTAINER Vadzim Kavalkou <vadzim.kavalkou@gmail.com>
COPY --from=dumper /data $PGDATA
To run the custom image use the next script:
docker run -p 5432:5432 postgres-custom:latest
That's it.
If you have any question, feel free to contact me direct in linkedin.
