Created
November 15, 2016 20:23
-
-
Save dsbaars/99e33a0d82255d129026beb6a49074b8 to your computer and use it in GitHub Desktop.
postgres modified from docker-library to contain libpq
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # vim:set ft=dockerfile: | |
| FROM alpine:3.4 | |
| MAINTAINER Djuri Baars <[email protected]> | |
| # alpine includes "postgres" user/group in base install | |
| # /etc/passwd:22:postgres:x:70:70::/var/lib/postgresql:/bin/sh | |
| # /etc/group:34:postgres:x:70: | |
| # su-exec (gosu-compatible) is installed further down | |
| # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default | |
| # alpine doesn't require explicit locale-file generation | |
| ENV LANG en_US.utf8 | |
| RUN mkdir /docker-entrypoint-initdb.d | |
| ENV PG_MAJOR 9.5 | |
| ENV PG_VERSION 9.5.5 | |
| ENV PG_SHA256 02c65290be74de6604c3fed87c9fd3e6b32e949f0ab8105a75bd7ed5aa71f394 | |
| RUN set -ex \ | |
| \ | |
| && apk add --no-cache --virtual .fetch-deps \ | |
| ca-certificates \ | |
| openssl \ | |
| tar \ | |
| \ | |
| && wget -O postgresql.tar.bz2 "https://ftp.postgresql.org/pub/source/v$PG_VERSION/postgresql-$PG_VERSION.tar.bz2" \ | |
| && echo "$PG_SHA256 *postgresql.tar.bz2" | sha256sum -c - \ | |
| && mkdir -p /usr/src/postgresql \ | |
| && tar \ | |
| --extract \ | |
| --file postgresql.tar.bz2 \ | |
| --directory /usr/src/postgresql \ | |
| --strip-components 1 \ | |
| && rm postgresql.tar.bz2 \ | |
| \ | |
| && apk add --no-cache --virtual .build-deps \ | |
| bison \ | |
| flex \ | |
| gcc \ | |
| # krb5-dev \ | |
| libc-dev \ | |
| libedit-dev \ | |
| libxml2-dev \ | |
| libxslt-dev \ | |
| make \ | |
| # openldap-dev \ | |
| openssl-dev \ | |
| perl \ | |
| # perl-dev \ | |
| # python-dev \ | |
| # python3-dev \ | |
| # tcl-dev \ | |
| util-linux-dev \ | |
| zlib-dev \ | |
| \ | |
| && cd /usr/src/postgresql \ | |
| # configure options taken from: | |
| # https://anonscm.debian.org/cgit/pkg-postgresql/postgresql.git/tree/debian/rules?h=9.5 | |
| && ./configure \ | |
| # "/usr/src/postgresql/src/backend/access/common/tupconvert.c:105: undefined reference to `libintl_gettext'" | |
| # --enable-nls \ | |
| --enable-integer-datetimes \ | |
| --enable-thread-safety \ | |
| --enable-tap-tests \ | |
| # skip debugging info -- we want tiny size instead | |
| # --enable-debug \ | |
| --disable-rpath \ | |
| --with-uuid=e2fs \ | |
| --with-gnu-ld \ | |
| --with-pgport=5432 \ | |
| --with-system-tzdata=/usr/share/zoneinfo \ | |
| --prefix=/usr/local \ | |
| \ | |
| # these make our image abnormally large (at least 100MB larger), which seems uncouth for an "Alpine" (ie, "small") variant :) | |
| # --with-krb5 \ | |
| # --with-gssapi \ | |
| # --with-ldap \ | |
| # --with-tcl \ | |
| # --with-perl \ | |
| # --with-python \ | |
| # --with-pam \ | |
| --with-openssl \ | |
| --with-libxml \ | |
| --with-libxslt \ | |
| && make -j "$(getconf _NPROCESSORS_ONLN)" world \ | |
| && make install-world \ | |
| && make -C contrib install \ | |
| \ | |
| && runDeps="$( \ | |
| scanelf --needed --nobanner --recursive /usr/local \ | |
| | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ | |
| | sort -u \ | |
| | xargs -r apk info --installed \ | |
| | sort -u \ | |
| )" \ | |
| && apk add --no-cache --virtual .postgresql-rundeps \ | |
| $runDeps \ | |
| bash \ | |
| su-exec \ | |
| # tzdata loading functionality is optional, and fails gracefully | |
| # tzdata \ | |
| && apk del .fetch-deps .build-deps \ | |
| && cd / \ | |
| && rm -rf \ | |
| /usr/src/postgresql | |
| # /usr/local/include/* \ | |
| #&& find /usr/local -name '*.a' -delete | |
| # make the sample config easier to munge (and "correct by default") | |
| RUN sed -ri "s!^#?(listen_addresses)\s*=\s*\S+.*!\1 = '*'!" /usr/local/share/postgresql/postgresql.conf.sample | |
| RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql | |
| ENV PATH /usr/lib/postgresql/$PG_MAJOR/bin:$PATH | |
| ENV PGDATA /var/lib/postgresql/data | |
| VOLUME /var/lib/postgresql/data | |
| COPY docker-entrypoint.sh / | |
| ENTRYPOINT ["/docker-entrypoint.sh"] | |
| EXPOSE 5432 | |
| CMD ["postgres"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment