In the docker -entrypoint.sh script, the official docker postgres image is written:
psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" ) echo for f in /docker-entrypoint-initdb.d/*; do case "$f" in *.sh) echo "$0: running $f"; . "$f" ;; *.sql) echo "$0: running $f"; "${psql[@]}" < "$f"; echo ;; *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${psql[@]}"; echo ;; *) echo "$0: ignoring $f" ;; esac echo done
Thus, each .sql file that you want to execute inside your docker image can be placed inside this folder. So my docker file looks like
FROM postgres:9.3 ENV POSTGRES_USER docker ENV POSTGRES_PASSWORD docker ENV POSTGRES_DB docker ADD CreateDB.sql /docker-entrypoint-initdb.d/
And the contents of my CreateDB.sql:
CREATE TABLE web_origins ( client_id character varying(36) NOT NULL, value character varying(255) );
So, I just start my container with:
docker run -d my-postgres
To check:
docker exec -it 6250aee43d12 bash root@6250aee43d12 :/
lvthillo
source share