Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
slim.report.json
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ ENV PGROOT=/var/lib/postgresql \
OR_DISABLE_AUTO_UPGRADE=${OR_DISABLE_AUTO_UPGRADE:-false}

WORKDIR /var/lib/postgresql
VOLUME /var/lib/postgresql/data
EXPOSE 5432 8008 8081
USER postgres

Expand Down
Empty file modified or-entrypoint.sh
100644 → 100755
Empty file.
99 changes: 53 additions & 46 deletions slim-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,69 +40,76 @@ esac

echo "Slimming image: $SOURCE_IMAGE -> $TARGET_IMAGE (arch: $ARCH, lib: $LIB_ARCH)"

# use *--mount* volume so it starts with an empty PGDATA directory to initdb will be called and the components used for it will be perserved
# use /tmp dir for data during build so it starts with an empty PGDATA directory to initdb will be called and the components used for it will be perserved
slim build --target "$SOURCE_IMAGE" \
--tag "$TARGET_IMAGE" \
--include-new=false \
--env=PGROOT=/tmp/postgresql \
--env=PGDATA=/tmp/postgresql/data \
--env=PGLOG=/tmp/postgresql/pg_log \
--env=PGSOCKET=/tmp/postgresql \
--exclude-varlock-files=false \
--http-probe=false \
--continue-after=60 \
--mount slim-pgdata:/var/lib/postgresql/data \
--expose=5432 \
--expose=8008 \
--expose=8081 \
--include-path=/usr/lib/postgresql \
--include-shell \
--include-bin=/bin/cat \
--include-bin=/bin/chmod \
--include-bin=/bin/cp \
--include-bin=/bin/du \
--include-bin=/bin/ln \
--include-bin=/bin/mkdir \
--include-bin=/bin/mv \
--include-bin=/bin/rm \
--include-bin=/bin/sleep \
--include-bin=/bin/touch \
--include-bin=/usr/bin/awk \
--include-bin=/usr/bin/basename \
--include-bin=/usr/bin/chown \
--include-bin=/usr/bin/cut \
--include-bin=/usr/bin/dirname \
--include-bin=/usr/bin/env \
--include-bin=/usr/bin/find \
--include-bin=/usr/bin/grep \
--include-bin=/usr/bin/head \
--include-bin=/usr/bin/id \
--include-bin=/usr/bin/less \
--include-bin=/usr/bin/locale \
--include-bin=/usr/bin/localedef \
--include-bin=/usr/bin/ls \
--include-bin=/usr/bin/mktemp \
--include-bin=/usr/bin/pg_isready \
--include-bin=/usr/bin/psql \
--include-bin=/usr/bin/sed \
--include-bin=/usr/bin/sort \
--include-bin=/usr/bin/tail \
--include-bin=/usr/bin/test \
--include-bin=/usr/bin/timescaledb-parallel-copy \
--include-bin=/usr/bin/timescaledb-tune \
--include-bin=/usr/bin/tr \
--include-bin=/usr/bin/wc \
--include-bin=/usr/bin/xargs \
--include-bin=/usr/lib/postgresql/17/bin/psql \
--include-path=/etc/alternatives \
--include-path=/run \
--include-path=/usr/bin/timescaledb-tune \
--include-path=/usr/lib/${LIB_ARCH} \
--include-path=/usr/lib/postgresql \
--include-path=/usr/local/bin/timescaledb-tune \
--include-path=/usr/share/postgresql \
--include-path=/usr/share/postgresql-common \
--include-path=/usr/share/proj \
--include-path=/usr/share/gdal \
--include-path=/usr/share/pgbouncer \
--include-path=/usr/share/locales \
--include-path=/usr/share/zoneinfo \
--include-path=/etc/alternatives \
--include-path=/usr/local/bin \
--preserve-path=/var/lib/postgresql \
--include-path=/var \
--preserve-path=/docker-entrypoint-initdb.d \
--preserve-path=/or-entrypoint.sh \
--preserve-path=/etc/postgresql \
--preserve-path=/etc/ssl \
--include-shell \
--include-bin=/usr/bin/timescaledb-tune \
--include-bin=/usr/bin/timescaledb-parallel-copy \
--include-bin=/usr/bin/sort \
--include-bin=/usr/bin/find \
--include-bin=/usr/bin/xargs \
--include-bin=/usr/bin/dirname \
--include-bin=/usr/bin/basename \
--include-bin=/usr/bin/head \
--include-bin=/usr/bin/tail \
--include-bin=/usr/bin/wc \
--include-bin=/usr/bin/cut \
--include-bin=/usr/bin/tr \
--include-bin=/usr/bin/sed \
--include-bin=/usr/bin/awk \
--include-bin=/usr/bin/grep \
--include-bin=/bin/cat \
--include-bin=/bin/mv \
--include-bin=/bin/mkdir \
--include-bin=/bin/chmod \
--include-bin=/bin/rm \
--include-bin=/bin/du \
--include-bin=/bin/cp \
--include-bin=/bin/touch \
--include-bin=/usr/bin/id \
--include-bin=/usr/bin/env \
--include-bin=/bin/sleep \
--include-bin=/usr/bin/ls \
--include-bin=/usr/bin/test \
--include-bin=/usr/bin/psql \
--include-bin=/usr/bin/pg_isready \
--include-bin=/usr/bin/locale \
--include-bin=/usr/bin/localedef \
--include-bin=/usr/bin/less \
--include-bin=/bin/ln \
--include-bin=/usr/bin/chown

# delete volume to always start with an empty PGDATA directory
docker volume rm slim-pgdata
--preserve-path=/or-entrypoint.sh \
--preserve-path=/var/lib/postgresql

echo "Successfully created slimmed image: $TARGET_IMAGE"