-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6b02e7d
commit 9a0250f
Showing
4 changed files
with
601 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,221 @@ | ||
# | ||
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" | ||
# | ||
# PLEASE DO NOT EDIT IT DIRECTLY. | ||
# | ||
|
||
FROM cr.loongnix.cn/library/debian:buster-slim | ||
|
||
# 70 is the standard uid/gid for "postgres" in Alpine | ||
# https://git.alpinelinux.org/aports/tree/main/postgresql/postgresql.pre-install?h=3.12-stable | ||
RUN set -eux; \ | ||
groupadd -r postgres --gid=999; \ | ||
# https://salsa.debian.org/postgresql/postgresql-common/blob/997d842ee744687d99a2b2d95c1083a2615c79e8/debian/postgresql-common.postinst#L32-35 | ||
useradd -r -g postgres --uid=999 --home-dir=/var/lib/postgresql --shell=/bin/bash postgres; \ | ||
# also create the postgres user's home directory with appropriate permissions | ||
# see https://github.com/docker-library/postgres/issues/274 | ||
mkdir -p /var/lib/postgresql; \ | ||
chown -R postgres:postgres /var/lib/postgresql | ||
|
||
# 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 | ||
ENV LC_ALL en_US.UTF-8 | ||
ENV LC_CTYPE en_US.UTF-8 | ||
|
||
RUN mkdir /docker-entrypoint-initdb.d | ||
|
||
ENV PG_MAJOR 13 | ||
ENV PG_VERSION 13.13 | ||
ENV PG_SHA256 8af69c2599047a2ad246567d68ec4131aef116954d8c3e469e9789080b37a474 | ||
|
||
# The highest version of postgres/13/bullseye/Dockerfile(debian:bullseye-slim) is llvm-13, | ||
# so temporarily modify the version of llvm to llvm-13 | ||
ENV DOCKER_PG_LLVM_DEPS \ | ||
llvm-13-dev \ | ||
clang-13 | ||
ENV LLVM_CONFIG_PATH /usr/lib/llvm-13/bin/llvm-config | ||
ENV CLANG_VERSION clang-13 | ||
|
||
RUN apt-get update; \ | ||
apt-get install -y \ | ||
$DOCKER_PG_LLVM_DEPS \ | ||
bison \ | ||
coreutils \ | ||
dpkg-dev dpkg \ | ||
flex \ | ||
g++ \ | ||
gcc \ | ||
libkrb5-dev \ | ||
libc-dev \ | ||
libedit-dev \ | ||
libxml2-dev \ | ||
libxslt1-dev \ | ||
# linux-headers-loongson-3 \ | ||
make \ | ||
golang-openldap-dev \ | ||
openssl \ | ||
libperl-dev \ | ||
perl \ | ||
# perl-utils \ | ||
python3-dev \ | ||
tcl-dev \ | ||
util-linux \ | ||
zlib1g-dev \ | ||
# https://www.postgresql.org/docs/10/static/release-10.html#id-1.11.6.9.5.13 | ||
libicu-dev \ | ||
libssl-dev \ | ||
uuid-dev \ | ||
libipc-run-perl \ | ||
pax-utils \ | ||
wget pkg-config | ||
|
||
ENV GOSU_VERSION loongson-1.14 | ||
RUN set -eux; \ | ||
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ | ||
wget -O /usr/local/bin/gosu "https://github.com/Loongson-Cloud-Community/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ | ||
chmod +x /usr/local/bin/gosu; \ | ||
gosu --version; \ | ||
gosu nobody true | ||
|
||
RUN set -eux; \ | ||
\ | ||
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; \ | ||
\ | ||
cd /usr/src/postgresql; \ | ||
# update "DEFAULT_PGSOCKET_DIR" to "/var/run/postgresql" (matching Debian) | ||
# see https://anonscm.debian.org/git/pkg-postgresql/postgresql.git/tree/debian/patches/51-default-sockets-in-var.patch?id=8b539fcb3e093a521c095e70bdfa76887217b89f | ||
awk '$1 == "#define" && $2 == "DEFAULT_PGSOCKET_DIR" && $3 == "\"/tmp\"" { $3 = "\"/var/run/postgresql\""; print; next } { print }' src/include/pg_config_manual.h > src/include/pg_config_manual.h.new; \ | ||
grep '/var/run/postgresql' src/include/pg_config_manual.h.new; \ | ||
mv src/include/pg_config_manual.h.new src/include/pg_config_manual.h; \ | ||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ | ||
# explicitly update autoconf config.guess and config.sub so they support more arches/libcs | ||
wget -O config/config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'; \ | ||
wget -O config/config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'; \ | ||
\ | ||
# https://git.alpinelinux.org/aports/tree/community/postgresql12/APKBUILD?h=3.18-stable&id=a470294e6d6ca7059e41c54769b7c3c26ec901d4#n158 | ||
export LLVM_CONFIG=$LLVM_CONFIG_PATH; \ | ||
# https://git.alpinelinux.org/aports/tree/community/postgresql12/APKBUILD?h=3.18-stable&id=a470294e6d6ca7059e41c54769b7c3c26ec901d4#n163 | ||
export CLANG=$CLANG_VERSION; \ | ||
\ | ||
# configure options taken from: | ||
# https://anonscm.debian.org/cgit/pkg-postgresql/postgresql.git/tree/debian/rules?h=9.5 | ||
./configure \ | ||
--enable-option-checking=fatal \ | ||
--build="$gnuArch" \ | ||
# "/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 \ | ||
--with-includes=/usr/local/include \ | ||
--with-libraries=/usr/local/lib \ | ||
--with-gssapi \ | ||
--with-ldap \ | ||
--with-tcl \ | ||
--with-perl \ | ||
--with-python \ | ||
# --with-pam \ | ||
--with-openssl \ | ||
--with-libxml \ | ||
--with-libxslt \ | ||
--with-icu \ | ||
--with-llvm \ | ||
; \ | ||
make -j "$(nproc)" world; \ | ||
make install-world; \ | ||
make -C contrib install; \ | ||
\ | ||
# runDeps="$( \ | ||
# scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \ | ||
# | tr ',' '\n' \ | ||
# | sort -u \ | ||
# | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ | ||
## Remove plperl, plpython and pltcl dependencies by default to save image size | ||
## To use the pl extensions, those have to be installed in a derived image | ||
# | grep -v -e perl -e python -e tcl \ | ||
# )"; \ | ||
apt-get install -y \ | ||
# $runDeps \ | ||
# bash \ | ||
# su-exec \ | ||
tzdata \ | ||
zstd \ | ||
# https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.16.0#ICU_data_split | ||
# icu-data-full \ | ||
; \ | ||
cd /; \ | ||
rm -rf \ | ||
/usr/src/postgresql \ | ||
/usr/local/share/doc \ | ||
/usr/local/share/man \ | ||
; \ | ||
echo '{"spdxVersion":"SPDX-2.3","SPDXID":"SPDXRef-DOCUMENT","name":"postgres-sbom","packages":[{"name":"postgres","versionInfo":"13.13","SPDXID":"SPDXRef-Package--postgres","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:generic/[email protected]?os_name=alpine&os_version=3.17"}],"licenseDeclared":"PostgreSQL"}]}' > /usr/local/postgres.spdx.json \ | ||
; \ | ||
postgres --version | ||
|
||
# make the sample config easier to munge (and "correct by default") | ||
RUN set -eux; \ | ||
cp -v /usr/local/share/postgresql/postgresql.conf.sample /usr/local/share/postgresql/postgresql.conf.sample.orig; \ | ||
sed -ri "s!^#?(listen_addresses)\s*=\s*\S+.*!\1 = '*'!" /usr/local/share/postgresql/postgresql.conf.sample; \ | ||
grep -F "listen_addresses = '*'" /usr/local/share/postgresql/postgresql.conf.sample | ||
|
||
RUN mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 3777 /var/run/postgresql | ||
|
||
ENV PGDATA /var/lib/postgresql/data | ||
# this 777 will be replaced by 700 at runtime (allows semi-arbitrary "--user" values) | ||
RUN mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 1777 "$PGDATA" | ||
VOLUME /var/lib/postgresql/data | ||
|
||
COPY docker-entrypoint.sh /usr/local/bin/ | ||
ENTRYPOINT ["docker-entrypoint.sh"] | ||
|
||
# We set the default STOPSIGNAL to SIGINT, which corresponds to what PostgreSQL | ||
# calls "Fast Shutdown mode" wherein new connections are disallowed and any | ||
# in-progress transactions are aborted, allowing PostgreSQL to stop cleanly and | ||
# flush tables to disk, which is the best compromise available to avoid data | ||
# corruption. | ||
# | ||
# Users who know their applications do not keep open long-lived idle connections | ||
# may way to use a value of SIGTERM instead, which corresponds to "Smart | ||
# Shutdown mode" in which any existing sessions are allowed to finish and the | ||
# server stops when all sessions are terminated. | ||
# | ||
# See https://www.postgresql.org/docs/12/server-shutdown.html for more details | ||
# about available PostgreSQL server shutdown signals. | ||
# | ||
# See also https://www.postgresql.org/docs/12/server-start.html for further | ||
# justification of this as the default value, namely that the example (and | ||
# shipped) systemd service files use the "Fast Shutdown mode" for service | ||
# termination. | ||
# | ||
STOPSIGNAL SIGINT | ||
# | ||
# An additional setting that is recommended for all users regardless of this | ||
# value is the runtime "--stop-timeout" (or your orchestrator/runtime's | ||
# equivalent) for controlling how long to wait between sending the defined | ||
# STOPSIGNAL and sending SIGKILL (which is likely to cause data corruption). | ||
# | ||
# The default in most runtimes (such as Docker) is 10 seconds, and the | ||
# documentation at https://www.postgresql.org/docs/12/server-start.html notes | ||
# that even 90 seconds may not be long enough in many instances. | ||
|
||
EXPOSE 5432 | ||
CMD ["postgres"] |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# This file is generated by the template. | ||
|
||
REGISTRY?=cr.loongnix.cn | ||
ORGANIZATION?=library | ||
REPOSITORY?=postgres | ||
TAG?=13.13-buster-slim | ||
LATEST?=true | ||
|
||
IMAGE=$(REGISTRY)/$(ORGANIZATION)/$(REPOSITORY):$(TAG) | ||
|
||
default: image | ||
|
||
image: | ||
docker build \ | ||
--build-arg http_proxy=$(http_proxy) \ | ||
--build-arg https_proxy=$(https_proxy) \ | ||
-t $(IMAGE) \ | ||
. | ||
|
||
push: | ||
docker push $(IMAGE) | ||
#latest image | ||
@if [ $(LATEST) == "true" ]; \ | ||
then \ | ||
docker tag $(IMAGE) $(LATEST_IMAGE); \ | ||
docker push $(LATEST_IMAGE); \ | ||
fi |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
office: https://github.com/docker-library/postgres.git | ||
dockerfile: postgres/13/bullseye/Dockerfile |
Oops, something went wrong.