Install Discourse for development using Docker

Actualmente no hay forma de dockerizar Discourse en un Mac con chip M1, ¿verdad?

Al ejecutar d/boot_dev --init, me encontré con este error:

ActiveRecord::NoDatabaseError: No pudimos encontrar tu base de datos: discourse_development. Las configuraciones de base de datos disponibles se pueden encontrar en config/database.yml. (ActiveRecord::NoDatabaseError)

No estoy seguro de si esto es un error en el script boot_dev, o si la base de datos discourse_development se supone que debe crearse en otro lugar. De cualquier manera, pude solucionarlo con este cambio:

diff --git a/bin/docker/boot_dev b/bin/docker/boot_dev
index 89fdcf6f65..0e9c5ce7d5 100755
--- a/bin/docker/boot_dev
+++ b/bin/docker/boot_dev
@@ -122,6 +122,7 @@ echo "pnpm install..."

 if [ "${initialize}" = "initialize" ]; then
     echo "Migrating database..."
+    "${SCRIPTPATH}/rake" db:create
     "${SCRIPTPATH}/rake" db:migrate
     RAILS_ENV=test "${SCRIPTPATH}/rake" db:migrate

Después de eso, el proceso de configuración se ejecutó correctamente, siguiendo las instrucciones del OP.

No estoy lo suficientemente familiarizado con la base de código de Discourse como para saber si esta es la solución correcta, pero estaré encantado de enviar un PR si eso ayuda. :slightly_smiling_face:

6 Me gusta

Sí, por favor, crea una PR y enlázala aquí. ¡Gracias!

4 Me gusta

¡Hecho!

3 Me gusta

¿Tuviste suerte al hacerlo funcionar?

Recibí el mismo error. Ejecuté docker rm -f /discourse_dev y volví a ejecutar d/boot_dev --init y funcionó esta vez.

Aviso:
Me acabo de dar cuenta de que la carpeta es data/postgres en lugar de tmp/postgres, que es también la razón por la que el comando “restablecer base de datos” tiene como objetivo eliminar la carpeta data :slight_smile:

2 Me gusta

Volví a echar un vistazo a la instalación de desarrollo de Docker, pero sigo recibiendo:

Caused by:
PG::ConnectionBad: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory (PG::ConnectionBad)
        Is the server running locally and accepting connections on that socket?

Sin embargo, puedo confirmar que el servicio está activo (y funciona cuando uso mi instalación “manual” normal de Discourse sin Docker).

~/discourse_docker/discourse$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2025-03-10 17:26:13 GMT; 6min ago
    Process: 2052109 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 2052109 (code=exited, status=0/SUCCESS)

Mar 10 17:26:13 black-knight systemd[1]: Starting PostgreSQL RDBMS...
Mar 10 17:26:13 black-knight systemd[1]: Finished PostgreSQL RDBMS.

¿Docker Dev tiene necesidades de conectividad de Postgres específicas y diferentes?

2 Me gusta

Encontré que los niveles de registro predeterminados de :debug eran demasiado detallados: las consultas SQL ahogaban los errores importantes. config/environments/development.rb permite establecer DISCOURSE_DEV_LOG_LEVEL, pero no sé si esto se puede hacer a través del script d/rails.

De todos modos, simplemente lo codifiqué temporalmente en config/environments/development.rb a config.log_level = :info y eso resolvió el problema para mí. Podría ayudar a otros también.

1 me gusta

Estoy intentando iniciar esto con el plugin Data Explorer porque me gustaría examinar la automatización de DE.

Conseguí que el contenedor se iniciara.

Luego tropecé con la “instalación” del plugin clonando el repositorio y creando un enlace simbólico en el directorio discourse/plugins (¿es eso lo que se suponía que debía hacer? La guía realmente podría ser mucho más clara en ese punto).

Habilité el plugin a través de la interfaz de usuario. Pero cuando intento acceder a él, obtengo un error.

Todo lo que aparece en el registro es esto:

Procesando DiscourseDataExplorer::QueryController#index como JSON
Completado 500 Error interno del servidor en 62ms (ActiveRecord: 9.8ms (5 consultas, 0 en caché) | GC: 2.9ms)

¿Qué se supone que debo hacer con esto? ¿Dónde están los detalles?

1 me gusta

¿Has ejecutado las migraciones?

No tuve muy buena suerte al crear un enlace simbólico a mi carpeta de plugins:

Como resultado, terminé moviéndolo a una carpeta normal (ver mi último comentario en ese hilo).

Creo que actualmente existen algunas incompatibilidades con los volúmenes de Docker, los observadores de archivos y los enlaces simbólicos.

2 Me gusta

¡Gracias por la respuesta @Arkshine! ¿Qué debería haberme alertado de que esto era necesario? Revisé el tutorial sobre cómo instalar un plugin, pero supongo que el plugin que el tutorial usa como ejemplo no necesita migraciones.

Mientras tanto, no sé si esto me ayudará a superar el obstáculo porque me he topado con la necesidad de introducir el certificado proxy de mi empresa en el contenedor Docker y no he trabajado mucho con Docker antes :frowning:

¿Qué problema estás resolviendo? Una instalación de desarrollo generalmente está destinada a ser accesible solo para localhost (es decir, tu computadora) donde se está ejecutando la instalación.

¿O tal vez estás intentando depurar algo que requiere un certificado como un sistema de autenticación?

Cuando intenté iniciar mi imagen de nuevo ayer, ¿quería descargar gemas?

Instalando gemas...
Obteniendo índice de origen desde https://rubygems.org/

Reintentando fetcher debido a un error (2/4): Bundler::Fetcher::CertificateFailureError No se pudo verificar el certificado SSL para https://rubygems.org/.
Existe la posibilidad de que estés experimentando un ataque man-in-the-middle, pero lo más probable es que tu sistema no tenga los certificados CA necesarios para la verificación. Para obtener información sobre los certificados OpenSSL, consulta https://railsapps.github.io/openssl-certificate-verify-failed.html.

Reintentando fetcher debido a un error (3/4): Bundler::Fetcher::CertificateFailureError No se pudo verificar el certificado SSL para https://rubygems.org/.
Existe la posibilidad de que estés experimentando un ataque man-in-the-middle, pero lo más probable es que tu sistema no tenga los certificados CA necesarios para la verificación. Para obtener información sobre los certificados OpenSSL, consulta https://railsapps.github.io/openssl-certificate-verify-failed.html.

Reintentando fetcher debido a un error (4/4): Bundler::Fetcher::CertificateFailureError No se pudo verificar el certificado SSL para https://rubygems.org/.
Existe la posibilidad de que estés experimentando un ataque man-in-the-middle, pero lo más probable es que tu sistema no tenga los certificados CA necesarios para la verificación. Para obtener información sobre los certificados OpenSSL, consulta https://railsapps.github.io/openssl-certificate-verify-failed.html.

No se pudo verificar el certificado SSL para https://rubygems.org/.
Existe la posibilidad de que estés experimentando un ataque man-in-the-middle, pero lo más probable es que tu sistema no tenga
los certificados CA necesarios para la verificación. Para obtener información sobre los certificados OpenSSL, consulta
https://railsapps.github.io/openssl-certificate-verify-failed.html.

Oye, así que… ¿qué pasa si olvidas la contraseña de la cuenta de administrador? ¿Simplemente reinstalar todo el desarrollo?

No se pueden enviar correos electrónicos, por lo tanto, los restablecimientos no son posibles.

Puedes usar la consola para establecer una nueva contraseña o crear una nueva cuenta de administrador.

1 me gusta

Hay una ruta para convertirse en cualquier usuario.

  http://localhost:4200/session/any-username/become 
4 Me gusta