Sospecho que debería ser d/rake admin:create…
Lamentablemente no ![]()
OCI runtime exec failed: exec failed: unable to start container process: exec: "bin/rake": stat bin/rake: no such file or directory: unknown
¿Cuál fue el resultado de: d/boot_dev --init?
Usando origen en: /home/martyn/discourse
Usando datos en: /home/martyn/discourse/data/postgres
release: Extrayendo de discourse/discourse_dev
Digest: sha256:b64199f510bd9831af81ba8268bef3beff2abb45d0a264a0e29b35cfc3986f05
Status: La imagen está actualizada para discourse/discourse_dev:release
docker.io/discourse/discourse_dev:release
docker: Respuesta de error del demonio: Conflicto. El nombre del contenedor "/discourse_dev" ya está en uso por el contenedor "44c83548a9a9060716aa7d4fd803e239227f48375625f1d27da19b3d4162c56a". Tienes que eliminar (o renombrar) ese contenedor para poder reutilizar ese nombre.
Ver 'docker run --help'.
OK, así que has creado el contenedor.
Eso es muy extraño. Acabo de instalar en WSL desde cero y me funcionó, aunque necesité ejecutar d/exec yarn manualmente.
Sugiero detener, eliminar tu contenedor y volver a empezar, prestando atención a los errores anunciados en la consola.
He estado trabajando para configurar un entorno de desarrollo de Discourse con las instrucciones de Docker y estoy viendo errores al ejecutar cualquier comando de Yarn. Los comandos de Ruby funcionan bien, pero ejecutar d/yarn (y cualquiera de sus subcomandos) falla con este error:
discours(v3.1.3) $ d/exec yarn -v
<--- Últimas GCs --->
<--- Pila de JS --->
#
# OOM fatal de javascript en la asignación de MemoryChunk falló durante la deserialización.
#
Estoy en Fedora 39 con Docker 24.0.7. No he modificado nada más que clonar Discourse desde Git y cambiar a la etiqueta v3.1.3.
¿Alguien ha visto este error antes? ¡Gracias!
Parece que se está quedando sin memoria:
¿Cuánta RAM tiene?
Mi máquina tiene 64 GB de RAM y no creo haber establecido ningún límite en el uso de memoria de Docker. Solo tengo una instalación estándar de Docker en funcionamiento.
Editar: es interesante, los comandos de Node funcionan pero Yarn falla:
discourse(v3.1.3*) $ d/exec node -v
v18.17.1
discourse(v3.1.3*) $ d/exec yarn -v
<--- Last few GCs --->
<--- JS stacktrace --->
#
# Fatal javascript OOM in MemoryChunk allocation failed during deserialization.
#
Una actualización rápida: los comandos de Node también fallan tras más pruebas:
discourse(v3.1.3*) $ d/exec node --help
<--- Last few GCs --->
<--- JS stacktrace --->
#
# Fatal javascript OOM in MemoryChunk allocation failed during deserialization.
#
Cualquier cosa que no sea d/exec node -v arroja ese error.
Continuaré investigando y trataré de encontrar una solución.
Descubrí una solución para mi problema. Es un proceso un poco complicado y poco ortodoxo, pero funciona. En resumen, actualizar a Node.js 20.x.x solucionó mi problema.
Creé una imagen de Docker que utiliza Node.js v20.x.x en lugar de la v18.x.x predeterminada que utiliza la imagen de desarrollo de Discourse.
Comencé creando este Dockerfile:
# NOMBRE: discourse_node20
FROM discourse/discourse_dev:release
# actualizar node a 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
Luego construí la imagen: docker build -t discourse_node20 - < Dockerfile
Luego actualicé el comando docker run de d/boot_dev para usar la imagen discourse_node20 y no descargar discourse/discourse_dev:release ya que no se está utilizando. Aquí está ese comando actualizado en d/boot_dev:
# comentar la línea de abajo
# 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
A partir de ahí, pude ejecutar d/boot_dev --init, d/rails s y d/ember-cli con éxito, lo que me proporcionó un entorno de desarrollo funcional en Docker 24 y Fedora 39.
No sé por qué Node 20.x.x soluciona el problema. Espero que esto se solucione upstream en la imagen de desarrollo principal. Estaría feliz de contribuir con una solicitud de extracción, pero actualizar una dependencia importante parece algo más allá de una simple contribución rápida de mi parte.
Bueno, ¡al menos ya no estoy bloqueado por ahora!
¿Alguien ha conseguido que esto funcione en una Raspberry Pi? (sí, sé que la configuración de producción es compatible). ¿Qué cambios/configuración se necesitan?
Me aparece:
ADVERTENCIA: La plataforma de la imagen solicitada (linux/amd64) no coincide con la plataforma del host detectada (linux/arm64/v8) y no se solicitó ninguna plataforma específica
Y luego el contenedor simplemente se bloquea y se reinicia constantemente.
ACTUALIZACIÓN: Ah, veo que todavía no se ha introducido una imagen compatible. Comparar:
https://hub.docker.com/r/discourse/base/tags
(que es compatible)
con
https://hub.docker.com/r/discourse/discourse_dev/tags
No hay versión arm64 listada para esta última…
¿Alguien en Mac OS (13.6.3) (Intel) ha conseguido ejecutar Discourse en docker… y puede compartir cómo ha superado el error Error: Cannot find module 'esbuild'?
He notado que en la aplicación boot_dev, yarn nunca se ejecuta para el directorio de nivel superior, solo para app/assets/javascripts/discourse:
echo "Yarn install..."
"${SCRIPTPATH}/exec" yarn install --cwd app/assets/javascripts/discourse
Por lo tanto, tiene sentido que esbuild no esté instalado, ya que es una dependencia descrita en el package.json de nivel superior.
Sin embargo, este package.json no se puede instalar fuera del contenedor, ya que se instalará la versión incorrecta de esbuild (Mac, no Linux… pero el contenedor necesita Linux).
¿No debería haber una línea en boot_dev justo encima de “installing gems” que se parezca a esto?
echo "Installing top-level package.json ..."
"${SCRIPTPATH}/exec" yarn install
Cuando añado una línea como esa, puedo superar el paso de las migraciones sin un error de esbuild…
¿Se ha solucionado esto? Pude instalar y poner en marcha, pero al día siguiente cuando volví y ejecuté d/boot_dev me dio esta advertencia y ya no puede crear mi contenedor.
Es poco probable que el desarrollo de Discourse funcione utilizando la emulación de arquitectura de Docker.
Por favor, intente una instalación de desarrollo nativa.
Usando código fuente en: /Users/n_selvidge/discourse
Usando datos en: /Users/n_selvidge/discourse/data/postgres```
¿Ponerse en contacto con el proveedor de proxy y asegurarse de que esas llamadas estén permitidas?
Tengo el mismo error al ejecutar d/rails s,
/home/discourse/.bundle/gems/ruby/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/postgresql_adapter.rb:87:in `rescue in new_client': connection to server at "10.169.51.142", port 5432 failed: Connection refused (ActiveRecord::ConnectionNotEstablished)
Is the server running on that host and accepting TCP/IP connections?
¡Cualquier ayuda es apreciada!
d/rails s devuelve:
Error response from daemon: No such container: discourse_dev
¿Alguna sugerencia?
¿Ejecutaste d/boot_dev primero?
Sí, lo ingresé, gracias. Para empezar de nuevo, ¿asumo que elimino el contenedor de la GUI de Docker y también la carpeta del repositorio de discourse?


