Dockerfile (Apple/M1) pour lancer la branche stable de Discourse (v3.3.3) en 2025

Salut !

Il y a quelques jours, j’ai commencé à apprendre Discourse et je n’ai pas trouvé de Dockerfile pour les puces Apple/M. J’en ai donc créé un moi-même et je voudrais le partager avec tous ceux qui souhaitent également garder le contrôle de leur propre image.

Aussi, par ce post, j’aimerais apprendre comment fonctionnent Discourse et la communauté. J’espère que vous trouverez mon post utile. Vous êtes invités à me faire part de vos commentaires/réflexions/questions sur mon Dockerfile.

Mon Dockerfile est pour les puces Apple/M, mais il peut être facilement modifié.

# https://meta.discourse.org/t/install-discourse-on-ubuntu-or-debian-for-development/14727/1
# bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/main/linux)
# https://github.com/discourse/discourse/blob/main/docs/DEVELOPER-ADVANCED.md

FROM ruby:3.2-bookworm

ARG PROJECT_PATH=${PROJECT_PATH:-discourse}

# INSTALL DEPENDENCIES
#
# build-essential - Outils de compilation essentiels pour compiler des logiciels
# libxslt1-dev - Bibliothèque pour le traitement XSLT
# libcurl4-openssl-dev - Bibliothèque pour les requêtes HTTP avec prise en charge SSL
# libksba8 - Bibliothèques pour la fonctionnalité cryptographique
# libksba-dev - Bibliothèques pour la fonctionnalité cryptographique
# libreadline-dev - Bibliothèque pour GNU readline (ligne de commande interactive)
# libssl-dev - Bibliothèque de prise en charge SSL/TLS
# zlib1g-dev - Bibliothèque de compression
# libsnappy-dev - Bibliothèque de compression Snappy
# libyaml-dev - Bibliothèque d'analyse YAML
# libpq-dev - Bibliothèque client PostgreSQL pour les connexions à la base de données
# postgresql-client - Client PostgreSQL pour interagir avec des bases de données PostgreSQL distantes
# telnet - Outil pour tester les services réseau
# nano - Éditeur de texte en ligne de commande
# git - Système de contrôle de version Git
# net-tools - Utilitaires pour diagnostiquer et tester les connexions réseau
# dnsutils - Outils pour les requêtes DNS
# iputils-ping - Utilitaires pour pinger les hôtes et tester la connectivité
# curl - Outil en ligne de commande Curl pour transférer des données avec des URL
# wget - Outil en ligne de commande Wget pour télécharger des fichiers
# tzdata - Données de fuseau horaire pour la gestion des fuseaux horaires
# advancecomp - Outils pour optimiser les fichiers PNG et MNG
# jhead - Outil pour afficher et manipuler les données Exif
# jpegoptim - Outil pour optimiser les fichiers JPEG
# libjpeg-turbo-progs - Outils pour optimiser les fichiers JPEG
# optipng - Outil pour optimiser les fichiers PNG
# pngcrush - Outil pour optimiser les fichiers PNG
# pngquant - Outil pour optimiser les fichiers PNG
# gnupg2 - GNU Privacy Guard pour la communication sécurisée et le stockage des données
# libjpeg-dev - Fichiers de développement pour la bibliothèque JPEG
# libpng-dev - Fichiers de développement pour la bibliothèque PNG
# libtiff-dev - Fichiers de développement pour la bibliothèque TIFF
# libwebp-dev - Fichiers de développement pour la bibliothèque WebP
# libxml2-dev - Fichiers de développement pour la bibliothèque XML
# libltdl-dev - Fichiers de développement pour la bibliothèque libtool
# libfreetype6-dev - Fichiers de développement pour la bibliothèque FreeType
# liblcms2-dev - Fichiers de développement pour la bibliothèque Little CMS
# liblqr-1-0-dev - Fichiers de développement pour la bibliothèque Liquid Rescale
# libfftw3-dev - Fichiers de développement pour la bibliothèque Fastest Fourier Transform in the West
# ghostscript - Interpréteur pour le langage PostScript et PDF
#
RUN apt-get update -qq && apt-get install -y \
    build-essential \
    libxslt1-dev \
    libcurl4-openssl-dev \
    libksba8 \
    libksba-dev \
    libreadline-dev \
    libssl-dev \
    zlib1g-dev \
    libsnappy-dev \
    libyaml-dev \
    libpq-dev \
    postgresql-client \
    telnet \
    nano \
    git \
    net-tools \
    dnsutils \
    iputils-ping \
    curl \
    wget \
    tzdata \
    advancecomp \
    jhead \
    jpegoptim \
    libjpeg-turbo-progs \
    optipng \
    pngcrush \
    pngquant \
    gnupg2 \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libwebp-dev \
    libxml2-dev \
    libltdl-dev \
    libfreetype6-dev \
    liblcms2-dev \
    liblqr-1-0-dev \
    libfftw3-dev \
    ghostscript \
    && rm -rf /var/lib/apt/lists/*

# WORKING DIRECTORY
#
WORKDIR /tmp

# Télécharger et installer ImageMagick 7
RUN cd /tmp && wget https://imagemagick.org/download/ImageMagick.tar.gz && \
    tar xvzf ImageMagick.tar.gz && \
    cd ImageMagick-* && \
    ./configure && \
    make && \
    make install && \
    ldconfig /usr/local/lib && \
    cd .. && \
    rm -rf ImageMagick* && \
    magick --version

# OXIPNG - OPTIMISER LES FICHIERS PNG (ARM64)
# Choisissez votre plateforme spécifique et installez le package requis
# https://github.com/shssoichiro/oxipng/releases/
RUN wget https://github.com/shssoichiro/oxipng/releases/download/v9.1.3/oxipng_9.1.3-1_arm64.deb
RUN dpkg -i oxipng_9.1.3-1_arm64.deb

SHELL ["/bin/bash", "-c"]

# INSTALLER NODEJS ET PNPM ET YARN
#
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
RUN source /root/.nvm/nvm.sh && nvm install lts/hydrogen --default

# RUN source /root/.nvm/nvm.sh && \
#     corepack enable pnpm && \
#     corepack use pnpm@9

RUN source /root/.nvm/nvm.sh && \
    npm install -g yarn

# WORKING DIRECTORY
#
WORKDIR /app

# INSTALLER LES DÉPENDANCES RUBY ON RAILS
#
RUN gem install bundler -v 2.5.9

COPY ${PROJECT_PATH}/Gemfile /app/Gemfile
COPY ${PROJECT_PATH}/Gemfile.lock /app/Gemfile.lock

RUN bundle install --frozen

# INSTALLER LES DÉPENDANCES NODEJS
#
RUN source /root/.nvm/nvm.sh && npm install -g svgo

COPY ${PROJECT_PATH}/package.json   /app/package.json
COPY ${PROJECT_PATH}/patches        /app/patches

RUN source /root/.nvm/nvm.sh && yarn -v

Après avoir exécuté le conteneur, vous pouvez lancer le projet en utilisant simplement

bin/ember-cli -u

Bon codage !

2 « J'aime »