Note
dockerfiles needs your help reporting errors, bugs and usability feedback. If you encounter an error, please post on the Issue tracker.
docker notes and Dockerfile examples¶
Contents
Note
dockerfiles needs your help reporting errors, bugs and usability feedback. If you encounter an error, please post on the Issue tracker.
Quickstart¶
soon
Note
dockerfiles needs your help reporting errors, bugs and usability feedback. If you encounter an error, please post on the Issue tracker.
Postgresql¶
Postgresql from source.
- Postgresql from official git VCS.
- Adjustable version by updating
git checkout
tag. - Support for python, tcl, perl.
- Support for
init.d
service. - Pure Dockerfile, no external shell scripts.
This Dockerfile
compiles postgres from git and sets up a service with
the username and password docker
and docker
.
Currently it uses the release 9.3.1
.
The version can be adjusted by modifying the git checkout REL9_3_1
in
the Dockerfile
.
Building and debugging¶
sudo docker build -t="postgresql" .
$ sudo docker run -i -t postgresql /bin/bash
# and when inside:
$ service postgresql start
Running¶
$ CONTAINER=$(sudo docker run -d -p 5432 \
-t postgresql)
$ CONTAINER_IP=$(sudo docker inspect $CONTAINER | grep IPAddress | \
awk '{ print $2 }' | tr -d ',"')
# on your local machine postgres' client
$ psql -p5432 -h $CONTAINER_IP --username='docker' --password --list
Dockerfile¶
FROM ubuntu
#FROM stackbrew/ubuntu:13.10
#MAINTAINER Tony Narlock <tony@git-pull.com>
EXPOSE 5432
RUN apt-get update -y
RUN apt-get upgrade -y
RUN apt-get install build-essential -y
RUN apt-get install libreadline-dev zlib1g-dev flex bison libxml2-dev \
libfl-dev libxslt1-dev libssl-dev libfl-dev python2.7-dev python-dev \
libpam-dev tcl-dev libperl-dev git -y
RUN git clone git://git.postgresql.org/git/postgresql.git
RUN cd postgresql && git checkout REL9_3_1
RUN cd postgresql && ./configure --with-tcl --with-perl --with-python \
--with-pam --with-openssl --with-libxml --with-libxslt \
--mandir=/usr/local/share/postgresql/man \
--docdir=/usr/local/share/doc/postgresql-doc \
--sysconfdir=/etc/postgresql-common \
--datarootdir=/usr/local/share \
--datadir=/usr/local/share/postgresql \
--bindir=/usr/local/lib/postgresql/bin \
--libdir=/usr/local/lib \
--libexecdir=/usr/local/lib/postgresql \
--includedir=/usr/local/include/postgresql \
--with-pgport=5432 \
--enable-integer-datetimes \
--enable-thread-safety \
--enable-debug \
--disable-rpath \
--with-system-tzdata=/usr/share/zoneinfo
RUN cd postgresql && make
RUN cd postgresql && make install
RUN cd postgresql/contrib make all
RUN cd postgresql/contrib make install
RUN cp postgresql/contrib/start-scripts/linux /etc/init.d/postgresql
RUN sed -i 's,/usr/local/pgsql/data,/var/lib/postgresql/data,g' /etc/init.d/postgresql
RUN sed -i 's,/usr/local/pgsql,/usr/local/lib/postgresql,g' /etc/init.d/postgresql
RUN chmod +x /etc/init.d/postgresql
RUN update-rc.d postgresql defaults
RUN echo 'PATH=$PATH:/usr/local/lib/postgresql/bin; export PATH' > /etc/profile.d/postgresql.sh
RUN echo 'MANPATH=$MANPATH:/usr/local/postgresql/man; export MANPATH' >> /etc/profile.d/pgmanual.sh
RUN chmod 775 /etc/profile.d/postgresql.sh
RUN chmod 775 /etc/profile.d/pgmanual.sh
RUN . /etc/profile
RUN adduser postgres --disabled-password --gecos ""
RUN mkdir -p /var/log/postgresql
RUN chown -R postgres:postgres /var/log/postgresql
RUN mkdir -p /var/lib/postgresql/data
RUN chown -R postgres:postgres /var/lib/postgresql/data
RUN /sbin/ldconfig /usr/local/lib/postgresql
RUN su - postgres -c "/usr/local/lib/postgresql/bin/initdb \
-D /var/lib/postgresql/data"
RUN echo "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" | \
su postgres sh -c "/usr/local/lib/postgresql/bin/postgres --single \
-D /var/lib/postgresql/data \
-c config_file=/var/lib/postgresql/data/postgresql.conf"
RUN echo "host all all 0.0.0.0/0 trust" >> /var/lib/postgresql/data/pg_hba.conf
RUN echo "listen_addresses='*'" >> /var/lib/postgresql/data/postgresql.conf
CMD service postgresql start && tail -F /var/lib/postgresql/data/serverlog
Note
dockerfiles needs your help reporting errors, bugs and usability feedback. If you encounter an error, please post on the Issue tracker.
History¶
2013-11-18¶
- Postgresql Dockerfile.
Launch tmux workspace with tmuxp:
$ git clone git@github.com:tony/dockerfiles.git
$ cd dockerfiles
$ tmuxp load .