Skip to content
Draft
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
56 changes: 25 additions & 31 deletions image/base/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,36 +1,28 @@
# NAME: discourse/base
# VERSION: release

ARG DEBIAN_RELEASE=bookworm
ARG DEBIAN_RELEASE=trixie
ARG RUBY_VERSION=3.4.8
ARG FROM_DOCKER_IMAGE_TAG=${RUBY_VERSION}-${DEBIAN_RELEASE}-slim

FROM discourse/ruby:${FROM_DOCKER_IMAGE_TAG} AS builder
ARG DEBIAN_RELEASE
ENV DEBIAN_RELEASE=${DEBIAN_RELEASE}
RUN echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE}-backports main" > "/etc/apt/sources.list.d/${DEBIAN_RELEASE}-backports.list"
RUN apt update && \
RUN apt update &&\
DEBIAN_FRONTEND=noninteractive apt-get -y install wget \
autoconf build-essential \
git \
cmake \
gnupg \
libpcre3-dev \
libfreetype6-dev \
libpcre2-dev \
libfreetype-dev \
libbrotli-dev

FROM builder AS imagemagick_builder
ADD install-imagemagick /tmp/install-imagemagick
RUN /tmp/install-imagemagick

FROM builder AS nginx_builder
# From https://nginx.org/en/pgp_keys.html
ADD nginx_public_keys.key /tmp/nginx_public_keys.key
ADD install-nginx /tmp/install-nginx
RUN gpg --import /tmp/nginx_public_keys.key &&\
rm /tmp/nginx_public_keys.key &&\
/tmp/install-nginx

FROM discourse/ruby:${FROM_DOCKER_IMAGE_TAG} AS discourse_dependencies

ARG DEBIAN_RELEASE
Expand All @@ -55,13 +47,13 @@ RUN echo 2.0.`date +%Y%m%d` > /VERSION
RUN echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE}-backports main" > "/etc/apt/sources.list.d/${DEBIAN_RELEASE}-backports.list"

RUN --mount=type=tmpfs,target=/var/log \
echo "debconf debconf/frontend select Teletype" | debconf-set-selections; \
echo "debconf debconf/frontend select Teletype" | debconf-set-selections &&\
apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install gnupg sudo curl fping locales \
ca-certificates rsync \
cmake g++ pkg-config patch \
libxslt-dev libcurl4-openssl-dev \
libssl-dev libyaml-dev libtool \
libpcre3 libpcre3-dev zlib1g zlib1g-dev \
libpcre2-8-0 libpcre2-dev zlib1g zlib1g-dev \
libxml2-dev gawk parallel \
libreadline-dev anacron wget \
psmisc whois brotli libunwind-dev \
Expand All @@ -70,43 +62,45 @@ RUN --mount=type=tmpfs,target=/var/log \
# imagemagick runtime dependencies
ghostscript libjbig0 libtiff6 libpng16-16 libfontconfig1 \
libwebpdemux2 libwebpmux3 libxext6 librsvg2-2 libgomp1 \
fonts-urw-base35 libheif1/${DEBIAN_RELEASE}-backports \
fonts-urw-base35 libheif1 \
# nginx runtime dependencies \
nginx-common && \
nginx-common &&\
# install these without recommends to avoid pulling in e.g.
# X11 libraries, mailutils
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git rsyslog logrotate cron ssh-client less; \
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git rsyslog logrotate cron ssh-client less &&\
# postgres packages
install -d /usr/share/postgresql-common/pgdg &&\
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc &&\
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; \
# yarn packages
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -; \
echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list; \
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 &&\
# node packages
curl --silent --location https://deb.nodesource.com/setup_22.x | sudo bash -; \
curl --silent --location https://deb.nodesource.com/setup_22.x | sudo bash - &&\
# setup anacron, rsyslog, initctl
sed -i -e 's/start -q anacron/anacron -s/' /etc/cron.d/anacron; \
sed -i.bak 's/$ModLoad imklog/#$ModLoad imklog/' /etc/rsyslog.conf; \
sed -i.bak 's/module(load="imklog")/#module(load="imklog")/' /etc/rsyslog.conf; \
dpkg-divert --local --rename --add /sbin/initctl; \
sh -c "test -f /sbin/initctl || ln -s /bin/true /sbin/initctl"; \
sed -i -e 's/start -q anacron/anacron -s/' /etc/cron.d/anacron &&\
sed -i.bak 's/$ModLoad imklog/#$ModLoad imklog/' /etc/rsyslog.conf &&\
sed -i.bak 's/module(load="imklog")/#module(load="imklog")/' /etc/rsyslog.conf &&\
dpkg-divert --local --rename --add /sbin/initctl &&\
sh -c "test -f /sbin/initctl || ln -s /bin/true /sbin/initctl" &&\
apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install runit socat \
libpq-dev postgresql-client-${PG_MAJOR} \
nodejs yarn &&\
nodejs &&\
mkdir -p /etc/runit/1.d

# nginx
RUN apt update &&\
DEBIAN_FRONTEND=noninteractive apt-get -y install \
nginx-light \
libnginx-mod-http-brotli-filter \
libnginx-mod-http-brotli-static

ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
RUN sed -i "s/^# $LANG/$LANG/" /etc/locale.gen; \
RUN sed -i "s/^# $LANG/$LANG/" /etc/locale.gen &&\
locale-gen

RUN --mount=type=tmpfs,target=/root/.npm \
npm install -g pnpm@10

COPY --from=nginx_builder /usr/sbin/nginx /usr/sbin

# Copy binary and configuration files for magick
COPY --from=imagemagick_builder /usr/local/bin/magick /usr/local/bin/magick
COPY --from=imagemagick_builder /usr/local/etc/ImageMagick-7 /usr/local/etc/ImageMagick-7
Expand Down
12 changes: 2 additions & 10 deletions image/base/install-imagemagick
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,8 @@ apt -y -q install git make gcc pkg-config autoconf curl g++ yasm cmake \
libde265-0 libde265-dev ${LIBJPEGTURBO} libwebp7 x265 libx265-dev libtool \
libpng16-16 libpng-dev libwebp-dev libgomp1 libaom-dev \
libwebpmux3 libwebpdemux2 ghostscript libxml2-dev libxml2-utils librsvg2-dev \
libltdl7-dev libbz2-dev gsfonts libtiff-dev libfreetype6-dev libjpeg-dev

if cat /etc/issue | grep -qi Debian; then
# Get VERSION_CODENAME
. /etc/os-release
# Use backports
apt -y -q install libheif1/$VERSION_CODENAME-backports libheif-dev/$VERSION_CODENAME-backports
else
apt -y -q install libheif1 libheif-dev
fi
libltdl-dev libbz2-dev gsfonts libtiff-dev libfreetype-dev libjpeg-dev \
libheif1 libheif-dev

mkdir -p $WDIR
cd $WDIR
Expand Down
Loading
Loading