Skip to content

Commit 8b8124b

Browse files
DEV: merge all apt layers
minimize amount of --mount arguments in dockerfile
1 parent 5b0cd27 commit 8b8124b

File tree

1 file changed

+20
-32
lines changed

1 file changed

+20
-32
lines changed

image/base/Dockerfile

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,12 @@ RUN groupadd --gid 104 postgres &&\
2323

2424
RUN echo 2.0.`date +%Y%m%d` > /VERSION
2525
RUN echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE}-backports main" > "/etc/apt/sources.list.d/${DEBIAN_RELEASE}-backports.list"
26-
RUN --mount=type=cache,target=/var/cache/debconf,sharing=locked \
27-
echo "debconf debconf/frontend select Teletype" | debconf-set-selections
2826

2927
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
3028
--mount=type=cache,target=/var/cache/debconf,sharing=locked \
3129
--mount=type=cache,target=/var/lib/apt,sharing=locked \
3230
--mount=type=tmpfs,target=/var/log \
31+
echo "debconf debconf/frontend select Teletype" | debconf-set-selections; \
3332
apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install gnupg sudo curl fping locales \
3433
ca-certificates rsync \
3534
cmake g++ pkg-config patch \
@@ -41,49 +40,38 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
4140
libreadline-dev anacron wget \
4241
psmisc whois brotli libunwind-dev \
4342
libtcmalloc-minimal4 cmake \
44-
pngcrush pngquant ripgrep poppler-utils
43+
pngcrush pngquant ripgrep poppler-utils; \
4544

4645
# install these without recommends to avoid pulling in e.g.
4746
# X11 libraries, mailutils
48-
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
49-
--mount=type=cache,target=/var/cache/debconf,sharing=locked \
50-
--mount=type=cache,target=/var/lib/apt,sharing=locked \
51-
--mount=type=tmpfs,target=/var/log \
52-
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git rsyslog logrotate cron ssh-client less
47+
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git rsyslog logrotate cron ssh-client less; \
5348

54-
RUN install -d /usr/share/postgresql-common/pgdg &&\
49+
install -d /usr/share/postgresql-common/pgdg &&\
5550
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc &&\
56-
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt ${DEBIAN_RELEASE}-pgdg main" > /etc/apt/sources.list.d/pgdg.list
51+
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt ${DEBIAN_RELEASE}-pgdg main" > /etc/apt/sources.list.d/pgdg.list; \
5752

58-
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
59-
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list
53+
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -; \
54+
echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list; \
55+
56+
curl --silent --location https://deb.nodesource.com/setup_18.x | sudo bash -; \
57+
58+
sed -i -e 's/start -q anacron/anacron -s/' /etc/cron.d/anacron; \
59+
sed -i.bak 's/$ModLoad imklog/#$ModLoad imklog/' /etc/rsyslog.conf; \
60+
sed -i.bak 's/module(load="imklog")/#module(load="imklog")/' /etc/rsyslog.conf; \
61+
dpkg-divert --local --rename --add /sbin/initctl; \
62+
sh -c "test -f /sbin/initctl || ln -s /bin/true /sbin/initctl"; \
63+
apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install runit socat \
64+
postgresql-${PG_MAJOR} postgresql-contrib-${PG_MAJOR} postgresql-${PG_MAJOR}-pgvector \
65+
nodejs yarn &&\
66+
mkdir -p /etc/runit/1.d
6067

6168
ENV LC_ALL=en_US.UTF-8
6269
ENV LANG=en_US.UTF-8
6370
ENV LANGUAGE=en_US.UTF-8
6471
RUN sed -i "s/^# $LANG/$LANG/" /etc/locale.gen; \
6572
locale-gen
6673

67-
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
68-
--mount=type=cache,target=/var/cache/debconf,sharing=locked \
69-
--mount=type=cache,target=/var/lib/apt,sharing=locked \
70-
--mount=type=tmpfs,target=/var/log \
71-
curl --silent --location https://deb.nodesource.com/setup_18.x | sudo bash -
72-
73-
RUN sed -i -e 's/start -q anacron/anacron -s/' /etc/cron.d/anacron
74-
RUN sed -i.bak 's/$ModLoad imklog/#$ModLoad imklog/' /etc/rsyslog.conf
75-
RUN sed -i.bak 's/module(load="imklog")/#module(load="imklog")/' /etc/rsyslog.conf
76-
RUN dpkg-divert --local --rename --add /sbin/initctl
77-
RUN sh -c "test -f /sbin/initctl || ln -s /bin/true /sbin/initctl"
78-
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
79-
--mount=type=cache,target=/var/cache/debconf,sharing=locked \
80-
--mount=type=cache,target=/var/lib/apt,sharing=locked \
81-
--mount=type=tmpfs,target=/root/.npm \
82-
cd / &&\
83-
apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install runit socat \
84-
postgresql-${PG_MAJOR} postgresql-contrib-${PG_MAJOR} postgresql-${PG_MAJOR}-pgvector &&\
85-
mkdir -p /etc/runit/1.d &&\
86-
DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs yarn &&\
74+
RUN --mount=type=tmpfs,target=/root/.npm \
8775
npm install -g terser uglify-js pnpm
8876

8977
ADD install-imagemagick /tmp/install-imagemagick

0 commit comments

Comments
 (0)