# Initializing postgres database from DockerFile on docker Windows Host

**URL:** <https://forums.docker.com/t/initializing-postgres-database-from-dockerfile-on-docker-windows-host/27578>\
**Category:** General\
**Created:** [January 25, 2017, 6:06am UTC](https://forums.docker.com/t/initializing-postgres-database-from-dockerfile-on-docker-windows-host/27578 "2017-01-25T06:06:49Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![pcouas](https://avatars.discourse-cdn.com/v4/letter/p/7cd45c/32.png) [@pcouas](https://forums.docker.com/u/pcouas)\
**Post date:** [January 25, 2017, 6:06am UTC](https://forums.docker.com/t/initializing-postgres-database-from-dockerfile-on-docker-windows-host/27578/1 "2017-01-25T06:06:49Z")

</div>

Hi,

I have made an DockerFile from Centos7 with Postgres 9.5.  
I could see in screen my CREATE DATABASE  
but aftter dockerfile finish when i connect to postgres with psql, my database is not created ?  
Why ?

Regards

---

<div class="post-metadata">

**Author:** ![fiberoptic](https://sea3.discourse-cdn.com/docker/user_avatar/forums.docker.com/fiberoptic/32/9814_2.png) [@fiberoptic](https://forums.docker.com/u/fiberoptic)\
**Post date:** [January 25, 2017, 7:58am UTC](https://forums.docker.com/t/initializing-postgres-database-from-dockerfile-on-docker-windows-host/27578/2 "2017-01-25T07:58:18Z")

</div>

Hello,

Give your Dockerfile and how you launched tour container.  
Did you use the official postgres image? You would not have to create the database.

Nicolas

---

<div class="post-metadata">

**Author:** ![pcouas](https://avatars.discourse-cdn.com/v4/letter/p/7cd45c/32.png) [@pcouas](https://forums.docker.com/u/pcouas)\
**Post date:** [January 25, 2017, 6:39pm UTC](https://forums.docker.com/t/initializing-postgres-database-from-dockerfile-on-docker-windows-host/27578/3 "2017-01-25T18:39:09Z")

</div>

# “ported” by Adam Miller [maxamillion@fedoraproject.org](mailto:maxamillion@fedoraproject.org) from

# [https://github.com/fedora-cloud/Fedora-Dockerfiles](https://github.com/fedora-cloud/Fedora-Dockerfiles)

# 

# Originally written for Fedora-Dockerfiles by

# scollier [scollier@redhat.com](mailto:scollier@redhat.com)

FROM centos:centos7  
MAINTAINER The CentOS Project [cloud-ops@centos.org](mailto:cloud-ops@centos.org)

RUN yum -y update; yum clean all  
RUN yum -y install sudo epel-release; yum clean all  
RUN yum -y install postgresql-server postgresql postgresql-contrib supervisor pwgen; yum clean all

RUN mkdir -p /home/pgdata  
ADD ./postgresql-setup /usr/bin/postgresql-setup  
ADD ./supervisord.conf /etc/supervisord.conf  
ADD ./start\_postgres.sh /start\_postgres.sh

#RUN mkdir /var/lib/pgsql/data  
#Sudo requires a tty. fix that.  
RUN sed -i ‘s/.\*requiretty$/#Defaults requiretty/’ /etc/sudoers  
RUN chmod +x /usr/bin/postgresql-setup  
RUN chmod +x /start\_postgres.sh

RUN /usr/bin/postgresql-setup initdb

ADD ./postgresql.conf /home/pgdata/data/postgresql.conf

RUN chown -v postgres.postgres /home/pgdata/data/postgresql.conf

RUN echo “host all all 0.0.0.0/0 md5” \>\> /home/pgdata/data/pg\_hba.conf

run /start\_postgres.sh postgres postgres my\_database &

VOLUME ["/home/pgdata"]

EXPOSE 5432

CMD ["/bin/bash", “/start\_postgres.sh”]

##for testing  
#docker build -t v17 .

# 

#docker run --rm -it --entrypoint=/bin/bash v17  
#/start\_postgres.sh &

* * *

#!/bin/bash

DB\_NAME=${POSTGRES\_DB:-}  
DB\_USER=${POSTGRES\_USER:-}  
DB\_PASS=${POSTGRES\_PASSWORD:-}  
#PG\_CONFDIR="/var/lib/pgsql/data"  
PG\_CONFDIR="/home/pgdata/data"

\_\_create\_user() {  
echo "aaa"  
echo "bbbb “${DB\_USER}”…"  
echo “ccc “${DB\_PASS}”…”  
#Grant rights  
usermod -G wheel postgres

# Check to see if we have pre-defined credentials to use

if [-n “${DB\_USER}”]; then  
if [-z “${DB\_PASS}”]; then  
echo ""  
echo "WARNING: "  
echo "No password specified for “${DB\_USER}”. Generating one"  
echo ""  
DB\_PASS=$(pwgen -c -n -1 12)  
echo "Password for “${DB\_USER}” created as: “${DB\_PASS}”"  
fi  
echo "Creating user “${DB\_USER}”…"  
echo “CREATE ROLE ${DB\_USER} with CREATEROLE login superuser PASSWORD ‘${DB\_PASS}’;” |  
sudo -u postgres -H postgres --single   
-c config\_file=${PG\_CONFDIR}/postgresql.conf -D ${PG\_CONFDIR}

fi

if [-n “${DB\_NAME}”]; then  
echo "Creating database “${DB\_NAME}”…"  
echo “CREATE DATABASE ${DB\_NAME};” |   
sudo -u postgres -H postgres --single   
-c config\_file=${PG\_CONFDIR}/postgresql.conf -D ${PG\_CONFDIR}

if [-n “${DB\_USER}”]; then  
echo "Granting access to database “${DB\_NAME}” for user “${DB\_USER}”…"  
echo “GRANT ALL PRIVILEGES ON DATABASE ${DB\_NAME} to ${DB\_USER};” |  
sudo -u postgres -H postgres --single   
-c config\_file=${PG\_CONFDIR}/postgresql.conf -D ${PG\_CONFDIR}  
fi  
fi  
}

\_\_run\_supervisor() {  
supervisord -n  
}

export DB\_USER=$1  
export DB\_PASS=$2  
export DB\_NAME=$3

# Call all functions

\_\_create\_user  
\_\_run\_supervisor

---

<div class="post-metadata">

**Author:** ![somashekar](https://avatars.discourse-cdn.com/v4/letter/s/a88e4f/32.png) [@somashekar](https://forums.docker.com/u/somashekar)\
**Post date:** [August 23, 2018, 6:07am UTC](https://forums.docker.com/t/initializing-postgres-database-from-dockerfile-on-docker-windows-host/27578/4 "2018-08-23T06:07:35Z")

</div>

Hi,

Please provide me the dockerfile to create postgres on docker windows i am searching but i am unable to get the proper dockerfile.
