Discourse mit Docker für die Entwicklung installieren

Ich habe eine Lösung für mein Problem gefunden. Es ist ein etwas umständlicher, hacky Prozess, aber er funktioniert. Zusammenfassend lässt sich sagen, dass ein Upgrade auf Node.js 20.x.x mein Problem behoben hat.

Ich habe ein Docker-Image erstellt, das Node.js v20.x.x anstelle des Standard-v18.x.x verwendet, das das Discourse-Entwickler-Docker-Image nutzt.

Ich habe damit begonnen, diese Dockerfile zu erstellen:

# NAME: discourse_node20
FROM discourse/discourse_dev:release

# Upgrade Node auf 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

Dann habe ich das Image gebaut: docker build -t discourse_node20 - < Dockerfile

Dann habe ich den docker run-Befehl von d/boot_dev aktualisiert, um das discourse_node20-Image zu verwenden und discourse/discourse_dev:release nicht zu pullen, da es nicht verwendet wird. Hier ist der aktualisierte Befehl in d/boot_dev:

# Kommentar die folgende Zeile aus
# 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

Von dort aus konnte ich erfolgreich d/boot_dev --init, d/rails s und d/ember-cli ausführen, was mir eine funktionierende Entwicklungsumgebung in Docker 24 und Fedora 39 verschafft hat.


Ich weiß nicht, warum Node 20.x.x das Problem behebt. Hoffentlich wird dies im Haupt-Entwicklungs-Image behoben. Ich würde gerne einen Pull-Request beitragen, aber das Upgrade einer Hauptabhängigkeit scheint für mich mehr als nur ein schneller PR zu sein. :smile_cat: Nun, zumindest bin ich vorerst nicht mehr blockiert!