Skip to content

Commit af126d8

Browse files
authored
Fix slim image issues (#22)
* Prevent PostgreSQL database files from being added to the image * Add missing binaries * Add missing volume * Add slim.report.json to .gitignore See also: slimtoolkit/slim#331
1 parent 2c565a1 commit af126d8

4 files changed

Lines changed: 55 additions & 46 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
slim.report.json

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ ENV PGROOT=/var/lib/postgresql \
113113
OR_DISABLE_AUTO_UPGRADE=${OR_DISABLE_AUTO_UPGRADE:-false}
114114

115115
WORKDIR /var/lib/postgresql
116+
VOLUME /var/lib/postgresql/data
116117
EXPOSE 5432 8008 8081
117118
USER postgres
118119

or-entrypoint.sh

100644100755
File mode changed.

slim-image.sh

Lines changed: 53 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -40,69 +40,76 @@ esac
4040

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

43-
# 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
43+
# 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
4444
slim build --target "$SOURCE_IMAGE" \
4545
--tag "$TARGET_IMAGE" \
46+
--include-new=false \
47+
--env=PGROOT=/tmp/postgresql \
48+
--env=PGDATA=/tmp/postgresql/data \
49+
--env=PGLOG=/tmp/postgresql/pg_log \
50+
--env=PGSOCKET=/tmp/postgresql \
51+
--exclude-varlock-files=false \
4652
--http-probe=false \
4753
--continue-after=60 \
48-
--mount slim-pgdata:/var/lib/postgresql/data \
4954
--expose=5432 \
5055
--expose=8008 \
5156
--expose=8081 \
52-
--include-path=/usr/lib/postgresql \
57+
--include-shell \
58+
--include-bin=/bin/cat \
59+
--include-bin=/bin/chmod \
60+
--include-bin=/bin/cp \
61+
--include-bin=/bin/du \
62+
--include-bin=/bin/ln \
63+
--include-bin=/bin/mkdir \
64+
--include-bin=/bin/mv \
65+
--include-bin=/bin/rm \
66+
--include-bin=/bin/sleep \
67+
--include-bin=/bin/touch \
68+
--include-bin=/usr/bin/awk \
69+
--include-bin=/usr/bin/basename \
70+
--include-bin=/usr/bin/chown \
71+
--include-bin=/usr/bin/cut \
72+
--include-bin=/usr/bin/dirname \
73+
--include-bin=/usr/bin/env \
74+
--include-bin=/usr/bin/find \
75+
--include-bin=/usr/bin/grep \
76+
--include-bin=/usr/bin/head \
77+
--include-bin=/usr/bin/id \
78+
--include-bin=/usr/bin/less \
79+
--include-bin=/usr/bin/locale \
80+
--include-bin=/usr/bin/localedef \
81+
--include-bin=/usr/bin/ls \
82+
--include-bin=/usr/bin/mktemp \
83+
--include-bin=/usr/bin/pg_isready \
84+
--include-bin=/usr/bin/psql \
85+
--include-bin=/usr/bin/sed \
86+
--include-bin=/usr/bin/sort \
87+
--include-bin=/usr/bin/tail \
88+
--include-bin=/usr/bin/test \
89+
--include-bin=/usr/bin/timescaledb-parallel-copy \
90+
--include-bin=/usr/bin/timescaledb-tune \
91+
--include-bin=/usr/bin/tr \
92+
--include-bin=/usr/bin/wc \
93+
--include-bin=/usr/bin/xargs \
94+
--include-bin=/usr/lib/postgresql/17/bin/psql \
95+
--include-path=/etc/alternatives \
96+
--include-path=/run \
97+
--include-path=/usr/bin/timescaledb-tune \
5398
--include-path=/usr/lib/${LIB_ARCH} \
99+
--include-path=/usr/lib/postgresql \
100+
--include-path=/usr/local/bin/timescaledb-tune \
54101
--include-path=/usr/share/postgresql \
55102
--include-path=/usr/share/postgresql-common \
56103
--include-path=/usr/share/proj \
57104
--include-path=/usr/share/gdal \
58105
--include-path=/usr/share/pgbouncer \
59106
--include-path=/usr/share/locales \
60107
--include-path=/usr/share/zoneinfo \
61-
--include-path=/etc/alternatives \
62-
--include-path=/usr/local/bin \
63-
--preserve-path=/var/lib/postgresql \
108+
--include-path=/var \
64109
--preserve-path=/docker-entrypoint-initdb.d \
65-
--preserve-path=/or-entrypoint.sh \
66110
--preserve-path=/etc/postgresql \
67111
--preserve-path=/etc/ssl \
68-
--include-shell \
69-
--include-bin=/usr/bin/timescaledb-tune \
70-
--include-bin=/usr/bin/timescaledb-parallel-copy \
71-
--include-bin=/usr/bin/sort \
72-
--include-bin=/usr/bin/find \
73-
--include-bin=/usr/bin/xargs \
74-
--include-bin=/usr/bin/dirname \
75-
--include-bin=/usr/bin/basename \
76-
--include-bin=/usr/bin/head \
77-
--include-bin=/usr/bin/tail \
78-
--include-bin=/usr/bin/wc \
79-
--include-bin=/usr/bin/cut \
80-
--include-bin=/usr/bin/tr \
81-
--include-bin=/usr/bin/sed \
82-
--include-bin=/usr/bin/awk \
83-
--include-bin=/usr/bin/grep \
84-
--include-bin=/bin/cat \
85-
--include-bin=/bin/mv \
86-
--include-bin=/bin/mkdir \
87-
--include-bin=/bin/chmod \
88-
--include-bin=/bin/rm \
89-
--include-bin=/bin/du \
90-
--include-bin=/bin/cp \
91-
--include-bin=/bin/touch \
92-
--include-bin=/usr/bin/id \
93-
--include-bin=/usr/bin/env \
94-
--include-bin=/bin/sleep \
95-
--include-bin=/usr/bin/ls \
96-
--include-bin=/usr/bin/test \
97-
--include-bin=/usr/bin/psql \
98-
--include-bin=/usr/bin/pg_isready \
99-
--include-bin=/usr/bin/locale \
100-
--include-bin=/usr/bin/localedef \
101-
--include-bin=/usr/bin/less \
102-
--include-bin=/bin/ln \
103-
--include-bin=/usr/bin/chown
104-
105-
# delete volume to always start with an empty PGDATA directory
106-
docker volume rm slim-pgdata
112+
--preserve-path=/or-entrypoint.sh \
113+
--preserve-path=/var/lib/postgresql
107114

108115
echo "Successfully created slimmed image: $TARGET_IMAGE"

0 commit comments

Comments
 (0)