@@ -23,56 +23,61 @@ RUN groupadd --gid 104 postgres &&\
2323
2424RUN echo 2.0.`date +%Y%m%d` > /VERSION
2525RUN echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE}-backports main" > "/etc/apt/sources.list.d/${DEBIAN_RELEASE}-backports.list"
26- RUN echo "debconf debconf/frontend select Teletype" | debconf-set-selections
27- RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install gnupg sudo curl fping
28- RUN sh -c "fping proxy && echo 'Acquire { Retries \" 0\" ; HTTP { Proxy \" http://proxy:3128\" ;}; };' > /etc/apt/apt.conf.d/40proxy && apt-get update || true"
29- RUN apt-mark hold initscripts
30- RUN apt-get -y upgrade
31-
32- RUN DEBIAN_FRONTEND=noninteractive apt-get install -y locales
33- ENV LC_ALL en_US.UTF-8
34- ENV LANG en_US.UTF-8
35- ENV LANGUAGE en_US.UTF-8
36- RUN sed -i "s/^# $LANG/$LANG/" /etc/locale.gen; \
37- locale-gen
38-
39- RUN install -d /usr/share/postgresql-common/pgdg &&\
40- curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc &&\
41- 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
4226
43- RUN curl --silent --location https://deb.nodesource.com/setup_18.x | sudo bash -
44- RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
45- RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/ apt/sources.list.d/yarn.list
46- RUN apt-get -y update
47- # install these without recommends to avoid pulling in e.g.
48- # X11 libraries, mailutils
49- RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git rsyslog logrotate cron ssh-client less
50- RUN DEBIAN_FRONTEND=noninteractive apt-get -y install autoconf build-essential ca-certificates rsync \
27+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
28+ --mount=type=cache,target=/var/cache/debconf,sharing=locked \
29+ --mount=type=cache,target=/var/lib/ apt,sharing=locked \
30+ --mount=type=tmpfs,target=/var/log \
31+ echo "debconf debconf/frontend select Teletype" | debconf-set-selections; \
32+ apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install gnupg sudo curl fping locales \
33+ ca-certificates rsync \
34+ cmake g++ pkg-config patch \
5135 libxslt-dev libcurl4-openssl-dev \
5236 libssl-dev libyaml-dev libtool \
5337 libpcre3 libpcre3-dev zlib1g zlib1g-dev \
5438 libxml2-dev gawk parallel \
55- postgresql-${PG_MAJOR} postgresql-client \
56- postgresql-contrib-${PG_MAJOR} libpq-dev postgresql-${PG_MAJOR}-pgvector \
5739 libreadline-dev anacron wget \
5840 psmisc whois brotli libunwind-dev \
5941 libtcmalloc-minimal4 cmake \
60- pngcrush pngquant ripgrep poppler-utils
61- RUN sed -i -e 's/start -q anacron/anacron -s/' /etc/cron.d/anacron
62- RUN sed -i.bak 's/$ModLoad imklog/#$ModLoad imklog/' /etc/rsyslog.conf
63- RUN sed -i.bak 's/module(load="imklog")/#module(load="imklog")/' /etc/rsyslog.conf
64- RUN dpkg-divert --local --rename --add /sbin/initctl
65- RUN sh -c "test -f /sbin/initctl || ln -s /bin/true /sbin/initctl"
66- RUN cd / &&\
67- DEBIAN_FRONTEND=noninteractive apt-get -y install runit socat &&\
68- mkdir -p /etc/runit/1.d &&\
69- apt-get clean &&\
70- rm -f /etc/apt/apt.conf.d/40proxy &&\
71- DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs yarn &&\
42+ pngcrush pngquant ripgrep poppler-utils; \
43+ # install these without recommends to avoid pulling in e.g.
44+ # X11 libraries, mailutils
45+ DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git rsyslog logrotate cron ssh-client less; \
46+ # postgres packages
47+ install -d /usr/share/postgresql-common/pgdg &&\
48+ curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc &&\
49+ 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; \
50+ # yarn packages
51+ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -; \
52+ echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list; \
53+ # node packages
54+ curl --silent --location https://deb.nodesource.com/setup_18.x | sudo bash -; \
55+ # setup anacron, rsyslog, initctl
56+ sed -i -e 's/start -q anacron/anacron -s/' /etc/cron.d/anacron; \
57+ sed -i.bak 's/$ModLoad imklog/#$ModLoad imklog/' /etc/rsyslog.conf; \
58+ sed -i.bak 's/module(load="imklog")/#module(load="imklog")/' /etc/rsyslog.conf; \
59+ dpkg-divert --local --rename --add /sbin/initctl; \
60+ sh -c "test -f /sbin/initctl || ln -s /bin/true /sbin/initctl" ; \
61+ apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install runit socat \
62+ libpq-dev postgresql-client \
63+ postgresql-${PG_MAJOR} postgresql-contrib-${PG_MAJOR} postgresql-${PG_MAJOR}-pgvector \
64+ nodejs yarn &&\
65+ mkdir -p /etc/runit/1.d
66+
67+ ENV LC_ALL=en_US.UTF-8
68+ ENV LANG=en_US.UTF-8
69+ ENV LANGUAGE=en_US.UTF-8
70+ RUN sed -i "s/^# $LANG/$LANG/" /etc/locale.gen; \
71+ locale-gen
72+
73+ RUN --mount=type=tmpfs,target=/root/.npm \
7274 npm install -g terser uglify-js pnpm
7375
7476ADD install-imagemagick /tmp/install-imagemagick
75- RUN /tmp/install-imagemagick
77+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
78+ --mount=type=cache,target=/var/cache/debconf,sharing=locked \
79+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
80+ /tmp/install-imagemagick
7681
7782ADD install-jemalloc /tmp/install-jemalloc
7883RUN /tmp/install-jemalloc
@@ -81,15 +86,21 @@ RUN /tmp/install-jemalloc
8186ADD nginx_public_keys.key /tmp/nginx_public_keys.key
8287ADD install-nginx /tmp/install-nginx
8388
84- RUN gpg --import /tmp/nginx_public_keys.key &&\
89+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
90+ --mount=type=cache,target=/var/cache/debconf,sharing=locked \
91+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
92+ gpg --import /tmp/nginx_public_keys.key &&\
8593 rm /tmp/nginx_public_keys.key &&\
8694 /tmp/install-nginx
8795
8896ADD install-redis /tmp/install-redis
8997RUN /tmp/install-redis
9098
9199ADD install-oxipng /tmp/install-oxipng
92- RUN /tmp/install-oxipng
100+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
101+ --mount=type=cache,target=/var/cache/debconf,sharing=locked \
102+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
103+ /tmp/install-oxipng
93104
94105RUN echo 'gem: --no-document' >> /usr/local/etc/gemrc &&\
95106 gem update --system
@@ -105,22 +116,13 @@ ADD thpoff.c /src/thpoff.c
105116RUN gcc -o /usr/local/sbin/thpoff /src/thpoff.c && rm /src/thpoff.c
106117
107118# clean up for docker squash
108- RUN rm -fr /usr/share/man &&\
109- rm -fr /usr/share/doc &&\
110- rm -fr /usr/share/vim/vim74/doc &&\
111- rm -fr /usr/share/vim/vim74/lang &&\
112- rm -fr /usr/share/vim/vim74/spell/en* &&\
113- rm -fr /usr/share/vim/vim74/tutor &&\
114- rm -fr /usr/local/share/doc &&\
119+ RUN rm -fr /usr/local/share/doc &&\
115120 rm -fr /usr/local/share/ri &&\
116121 rm -fr /var/lib/apt/lists/* &&\
117122 rm -fr /root/.gem &&\
118123 rm -fr /root/.npm &&\
119124 rm -fr /tmp/*
120125
121- # this can probably be done, but I worry that people changing PG locales will have issues
122- # cd /usr/share/locale && rm -fr `ls -d */ | grep -v en`
123-
124126# this is required for aarch64 which uses buildx
125127# see https://github.com/docker/buildx/issues/150
126128RUN rm -f /etc/service
0 commit comments