Installer Discourse pour le développement avec Docker

J’ai trouvé une solution à mon problème. C’est un processus un peu compliqué et bancal, mais ça fonctionne. En résumé, la mise à niveau vers Node.js 20.x.x a résolu mon problème.

J’ai créé une image Docker qui utilise Node.js v20.x.x au lieu de la v18.x.x par défaut utilisée par l’image Docker de développement Discourse.

J’ai commencé par créer ce Dockerfile :

# NOM : discourse_node20
FROM discourse/discourse_dev:release

# mise à niveau de node vers LTS 20.x.x
ENV NODE_MAJOR=20
RUN apt-get update
RUN apt-get install -y ca-certificates curl gnupg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
RUN apt-get update
RUN apt-get install nodejs -y

Ensuite, j’ai construit l’image : docker build -t discourse_node20 - < Dockerfile

J’ai ensuite mis à jour la commande docker run de d/boot_dev pour utiliser l’image discourse_node20 et ne pas tirer discourse/discourse_dev:release puisqu’elle n’est pas utilisée. Voici cette commande mise à jour dans d/boot_dev :

# commenter la ligne ci-dessous
# docker pull discourse/discourse_dev:release
docker run \
    -d \
    -p $local_publish:8025:8025 \
    -p $local_publish:3000:3000 \
    -p $local_publish:4200:4200 \
    -p $local_publish:9292:9292 \
    -p $local_publish:9405:9405 \
    -v "$DATA_DIR:/shared/postgres_data:delegated" \
    -v "$SOURCE_DIR:/src:delegated" \
    -e UNICORN_BIND_ALL=true \
    -e NODE_OPTIONS=--max_old_space_size=8192 \
    $mount_plugin_symlinks \
    $ENV_ARGS \
    --hostname=discourse \
    --name=discourse_dev \
    --restart=always \
    discourse_node20 /sbin/boot

À partir de là, j’ai pu exécuter avec succès d/boot_dev --init, d/rails s et d/ember-cli, ce qui m’a donné un environnement de développement fonctionnel dans Docker 24 et Fedora 39.


Je ne sais pas pourquoi Node 20.x.x résout le problème. J’espère que cela sera corrigé en amont dans l’image de développement principale. Je serais heureux de contribuer avec une pull request, mais la mise à niveau d’une dépendance majeure semble être quelque chose qui dépasse une simple contribution rapide de ma part. :smile_cat: Enfin, au moins je ne suis plus bloqué pour l’instant !