discourse (latest)

Published 2026-07-21 19:15:03 +00:00 by nabeel

Installation

docker pull git.apps.vmslabs.net/phpvms/discourse:latest
sha256:cf0e4fd83005cc8b5b379a66bf19c3c66066cd3aee99c4306cceda12021cda11

Image Layers

# debian.sh --arch 'amd64' out/ 'bookworm' '@1782172800'
ARG RUBY_VERSION=3.4.9
ENV RUBY_VERSION=3.4.9
RUN |1 RUBY_VERSION=3.4.9 /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends bzip2 ca-certificates libgmp-dev libssl-dev libyaml-dev procps zlib1g-dev ; mkdir -p /usr/local/etc; { echo 'install: --no-document'; echo 'update: --no-document'; } >> /usr/local/etc/gemrc; savedAptMark="$(apt-mark showmanual)"; apt-get install -y --no-install-recommends git dpkg-dev libgdbm-dev ruby autoconf g++ gcc libbz2-dev libgdbm-compat-dev libglib2.0-dev libncurses-dev libxml2-dev libxslt-dev make wget xz-utils ; rustArch=; dpkgArch="$(dpkg --print-architecture)"; case "$dpkgArch" in 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.26.0/x86_64-unknown-linux-gnu/rustup-init'; rustupSha256='0b2f6c8f85a3d02fde2efc0ced4657869d73fccfce59defb4e8d29233116e6db' ;; 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.26.0/aarch64-unknown-linux-gnu/rustup-init'; rustupSha256='673e336c81c65e6b16dcdede33f4cc9ed0f08bde1dbe7a935f113605292dc800' ;; *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; esac; mkdir -p /tmp/rust; wget -O /tmp/rust/rustup-init "$rustupUrl"; echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; chmod +x /tmp/rust/rustup-init; export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; export PATH="$CARGO_HOME/bin:$PATH"; /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.77.0' --default-host "$rustArch"; rustc --version; cargo --version; mkdir /src; git -C /src clone https://github.com/rbenv/ruby-build.git; cd /src/ruby-build && ./install.sh; cd / && rm -fr /src; export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; export PATH="$CARGO_HOME/bin:$PATH"; CONFIGURE_OPTS="--disable-install-doc --enable-yjit" ruby-build ${RUBY_VERSION} /usr/local; rm -rf /tmp/rust; rm -rf /usr/local/bin/ruby-build; rm -rf /var/lib/apt/lists/*; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark > /dev/null; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; if dpkg -l | grep -i ruby; then exit 1; fi; [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; gem install bundler -v 4.0.11; bundle config build.ffi --disable-system-libffi; ruby --version; gem --version; bundle --version; gem list bundler; # buildkit
ARG DEBIAN_RELEASE=bookworm
ARG PG_MAJOR=15
ENV PG_MAJOR=15 RUBY_ALLOCATOR=/usr/lib/libjemalloc.so LEFTHOOK=0 DEBIAN_RELEASE=bookworm
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c groupadd --gid 104 postgres && useradd --uid 101 --gid 104 --home /var/lib/postgresql --shell /bin/bash -c "PostgreSQL administrator,,," postgres && groupadd --gid 106 redis && useradd --uid 103 --gid 106 --home /var/lib/redis --shell /usr/sbin/nologin redis && groupadd --gid 1000 discourse && useradd --uid 1000 --gid 1000 -m --shell /bin/bash discourse # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c echo 2.0.`date +%Y%m%d` > /VERSION # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE}-backports main" > "/etc/apt/sources.list.d/${DEBIAN_RELEASE}-backports.list" # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c 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 gawk anacron wget psmisc whois brotli pngcrush pngquant ripgrep poppler-utils catdoc antiword parallel libpcre3 zlib1g libjbig0 libtiff6 libpng16-16 libfontconfig1 libwebpdemux2 libwebpmux3 libxext6 librsvg2-2 libgomp1 fonts-urw-base35 libheif1/${DEBIAN_RELEASE}-backports advancecomp jpegoptim libjpeg-turbo-progs libglib2.0-0 libexpat1 libjpeg62-turbo libexif12 liblcms2-2 liborc-0.4-0 libcgif0 libimagequant0 libjxl0.7 libwebp7 libpango-1.0-0 libpangocairo-1.0-0 libcairo2 nginx-common && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git rsyslog logrotate cron ssh-client less; 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; 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} postgresql-client-18 && mkdir -p /etc/runit/1.d # buildkit
ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c sed -i "s/^# $LANG/$LANG/" /etc/locale.gen; locale-gen # buildkit
COPY /usr/sbin/nginx /usr/sbin # buildkit
COPY /usr/local/bin/magick /usr/local/bin/magick # buildkit
COPY /usr/local/etc/ImageMagick-7 /usr/local/etc/ImageMagick-7 # buildkit
COPY /usr/local/share/ImageMagick-7 /usr/local/share/ImageMagick-7 # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c ln -s /usr/local/bin/magick /usr/local/bin/animate && ln -s /usr/local/bin/magick /usr/local/bin/compare && ln -s /usr/local/bin/magick /usr/local/bin/composite && ln -s /usr/local/bin/magick /usr/local/bin/conjure && ln -s /usr/local/bin/magick /usr/local/bin/convert && ln -s /usr/local/bin/magick /usr/local/bin/display && ln -s /usr/local/bin/magick /usr/local/bin/identify && ln -s /usr/local/bin/magick /usr/local/bin/import && ln -s /usr/local/bin/magick /usr/local/bin/magick-script && ln -s /usr/local/bin/magick /usr/local/bin/mogrify && ln -s /usr/local/bin/magick /usr/local/bin/montage && ln -s /usr/local/bin/magick /usr/local/bin/stream && test $(magick -version | grep -o -e png -e tiff -e jpeg -e freetype -e heic -e webp | wc -l) -eq 6 # buildkit
COPY /usr/local/lib/libvips.so.42 /usr/local/lib/libvips.so.42 # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c ldconfig && ruby -rfiddle -e 'Fiddle.dlopen("libvips.so.42")' && if dpkg-query -W -f '${Package} ${db:Status-Status}\n' ghostscript libgs10 libgs-common libgs10-common 2>/dev/null | grep -q ' installed$' || command -v gs >/dev/null; then echo "ERROR: ghostscript must not be present in this image"; exit 1; fi # buildkit
COPY /usr/local/sbin/thpoff /usr/local/sbin # buildkit
COPY /usr/lib/libjemalloc.so /usr/lib # buildkit
COPY /usr/local/bin/jhead /usr/local/bin # buildkit
COPY /usr/local/bin/oxipng /usr/local/bin # buildkit
COPY /usr/local/bin/cjpegli /usr/local/bin # buildkit
ADD install-redis /tmp/install-redis # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c cd /tmp && gem fetch pups --version 1.4.0 && echo "5809731d6f4819defe1aac694e614c4b3d9958b5f378a70edf761f3808877052 pups-1.4.0.gem" | sha256sum -c && gem install --local --force pups-1.4.0.gem && rm pups-1.4.0.gem && mkdir -p /pups/bin/ && ln -s /usr/local/bin/pups /pups/bin/pups # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c rm -f /etc/service # buildkit
COPY etc/ /etc # buildkit
COPY sbin/ /sbin # buildkit
ADD nodesource-repo.gpg.key /usr/share/keyrings/nodesource.asc # buildkit
ADD yarn-pubkey.gpg.key /usr/share/keyrings/yarn.asc # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c echo "deb [signed-by=/usr/share/keyrings/yarn.asc] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list; printf 'Types: deb\nURIs: https://deb.nodesource.com/node_22.x\nSuites: nodistro\nComponents: main\nSigned-By: /usr/share/keyrings/nodesource.asc\n' > /etc/apt/sources.list.d/nodesource.sources; printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 600\n' > /etc/apt/preferences.d/nodejs; echo "debconf debconf/frontend select Teletype" | debconf-set-selections; apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install cmake g++ pkg-config patch libtool libxslt-dev libcurl4-openssl-dev libssl-dev libyaml-dev libxml2-dev libreadline-dev libunwind-dev nodejs yarn # buildkit
RUN |2 DEBIAN_RELEASE=bookworm PG_MAJOR=15 /bin/sh -c npm install -g pnpm@10 # buildkit
ARG DISCOURSE_BRANCH=main
RUN |3 DEBIAN_RELEASE=bookworm PG_MAJOR=15 DISCOURSE_BRANCH=main /bin/sh -c install -dm 0755 -o discourse -g discourse /var/www/discourse && sudo -u discourse git clone --branch $DISCOURSE_BRANCH --filter=tree:0 https://github.com/discourse/discourse.git /var/www/discourse # buildkit
ENV RAILS_ENV=production
RUN |3 DEBIAN_RELEASE=bookworm PG_MAJOR=15 DISCOURSE_BRANCH=main /bin/sh -c cd /var/www/discourse && sudo -u discourse bundle config --local deployment true && sudo -u discourse bundle config --local path ./vendor/bundle && sudo -u discourse bundle config --local without test development && sudo -u discourse bundle install --jobs $(($(nproc) - 1)) && find /var/www/discourse/vendor/bundle -name cache -not -path '*/gems/*' -type d -exec rm -rf {} + && find /var/www/discourse/vendor/bundle -name tmp -type d -exec rm -rf {} + # buildkit
RUN |3 DEBIAN_RELEASE=bookworm PG_MAJOR=15 DISCOURSE_BRANCH=main /bin/sh -c cd /var/www/discourse && sudo -u discourse /bin/bash -c 'if [ -f yarn.lock ]; then yarn install --frozen-lockfile && yarn cache clean; else pnpm install --frozen-lockfile; fi' # buildkit
RUN |3 DEBIAN_RELEASE=bookworm PG_MAJOR=15 DISCOURSE_BRANCH=main /bin/sh -c apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install postgresql-${PG_MAJOR} postgresql-contrib-${PG_MAJOR} postgresql-${PG_MAJOR}-pgvector # buildkit
RUN |3 DEBIAN_RELEASE=bookworm PG_MAJOR=15 DISCOURSE_BRANCH=main /bin/sh -c /tmp/install-redis # buildkit
/bin/bash -c /usr/local/bin/pups --stdin

Labels

Key Value
org.opencontainers.image.created 2026-07-21T19:13:05+00:00
Details
Container
2026-07-21 19:15:03 +00:00
1
OCI / Docker
linux/amd64
1.3 GiB
Versions (1) View all
latest 2026-07-21