Error fatal al intentar iniciar Docker (Oracle VM)

Hola a todos: soy nuevo en Discourse (¡se ve increíble!) y, aunque tengo algunas habilidades técnicas generales, creo que me clasificaría como un novato relativo en el mundo de Docker/Linux VM.

Tengo una VM gratuita de Oracle ejecutando Oracle Linux. He completado los pasos aquí (https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud) y estoy ejecutando el paso ./discourse-setup.

Estoy recibiendo consistentemente el mensaje de error a continuación… intenté ejecutar discourse doctor pero sin éxito. Espero que alguien pueda indicarme el camino correcto sobre lo que podría estar ocurriendo aquí. ¡Muchas gracias de antemano! -Tim

[2021-06-11T04:09:29.733935 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2021-06-11T04:09:29.735773 #1]  INFO -- : > sleep 5
2021-06-11 04:09:30.320 GMT [54] LOG:  0 8kB está fuera del rango válido para el parámetro "shared_buffers" (16 .. 1073741823)
2021-06-11 04:09:30.322 UTC [54] FATAL:  el archivo de configuración "/etc/postgresql/13/main/postgresql.conf" contiene errores
I, [2021-06-11T04:09:34.739847 #1]  INFO -- : 
I, [2021-06-11T04:09:34.740097 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
createdb: error: no se pudo conectar a la base de datos template1: no se pudo conectar al servidor: No existe tal archivo o directorio
	¿Se está ejecutando el servidor localmente y aceptando
	conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:34.860266 #1]  INFO -- : 
I, [2021-06-11T04:09:34.860745 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: error: no se pudo conectar al servidor: No existe tal archivo o directorio
	¿Se está ejecutando el servidor localmente y aceptando
	conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.023423 #1]  INFO -- : 
I, [2021-06-11T04:09:35.023810 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: error: no se pudo conectar al servidor: No existe tal archivo o directorio
	¿Se está ejecutando el servidor localmente y aceptando
	conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.137806 #1]  INFO -- : 
I, [2021-06-11T04:09:35.138325 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: error: no se pudo conectar al servidor: No existe tal archivo o directorio
	¿Se está ejecutando el servidor localmente y aceptando
	conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.257190 #1]  INFO -- : 
I, [2021-06-11T04:09:35.257476 #1]  INFO -- : Terminando procesos asíncronos


FALLÓ
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' falló con retorno #<Process::Status: pid 80 exit 2>
Ubicación del fallo: /pups/lib/pups/exec_command.rb:112:in `spawn'
ejecución fallida con los parámetros "su postgres -c 'psql $db_name -c \\\"alter schema public owner to $db_user;\\\"'"
14ef6216494c846091ea6ce48143e2f25018b9d2579b6d4d0021d605f7f5e145
** FALLO AL INICIALIZAR ** por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.

Hola @Meathead40,
estoy experimentando posiblemente el mismo problema.

Logré configurar Discourse en Oracle Free en junio. Ahora he vuelto a ejecutar el script de configuración para cambiar algunos parámetros relacionados con la configuración del correo electrónico.
El primer error que puedo rastrear en el registro es: FATAL: el archivo de configuración "/etc/postgresql/13/main/postgresql.conf" contiene errores,
pero en mi caso ese archivo no existe. Además, el servicio de PostgreSQL no se está ejecutando (ni siquiera está disponible como servicio).

¿Lograste resolver este problema? ¿Alguien más ha experimentado lo mismo?

Saludos,
Stef

¿Puedes compartir la salida de free -m --si?

¿Lo has revisado dentro del contenedor? ¿También tenías la entrada de registro sobre shared_buffers siendo demasiado pequeño?

En mi caso:

# /var/discourse/launcher enter app
# egrep shared_buffers /etc/postgresql/13/main/postgresql.conf
shared_buffers = 128MB
exit

Hola @Falco, esta es la salida del comando:
total used free shared buff/cache available
Mem: 703 359 86 7 257 207
Swap: 8388 246 8142

Hola @Ed_S, obtengo el siguiente mensaje:

/var/discourse/launcher enter app
No se puede conectar al demonio de Docker: verifica que se esté ejecutando y que tengas acceso

Deberías ver el mismo archivo aquí:
/var/discourse/shared/standalone/postgres_data/postgresql.conf

Idealmente, justo antes de la entrada del registro que indica un error en la configuración, verás una línea que describe cuál es el error.

Quizás encuentres el registro en:
/var/discourse/shared/standalone/log/var-log/postgres/current

gracias por las sugerencias. Logré recopilar más información.
Esto es del registro, alrededor del momento del error (los mensajes anteriores son de días antes):

2021-08-02 13:33:16.980 UTC [2419] LOG:  received smart shutdown request
2021-08-02 13:33:28.273 UTC [2419] LOG:  background worker "logical replication launcher" (PID 2442) exited with exit code 1
2021-08-02 13:33:28.344 UTC [2437] LOG:  shutting down
2021-08-02 13:33:28.552 UTC [2419] LOG:  database system is shut down

También obtuve la configuración del búfer compartido:

shared_buffers = 128MB     # min 128kB
#wal_buffers = -1            # min 32kB, -1 sets based on shared_buffers

Hmm, ¿podemos retroceder un poco: donde veas ese error FATAL, qué pocas líneas lo preceden?

claro, y gracias nuevamente por el apoyo.

Estoy ejecutando la configuración en una instalación existente con el propósito de cambiar algunos parámetros de configuración. La primera parte del script detecta lo siguiente:

sudo ./discourse-setup 
which: no docker.io en (/sbin:/bin:/usr/sbin:/usr/bin)
which: no docker.io en (/sbin:/bin:/usr/sbin:/usr/bin)
¡El archivo de configuración containers/app.yml ya existe!

. . . reconfigurando . . .


Guardando el archivo antiguo como app.yml.2021-08-03-102829.bak
Deteniendo el contenedor existente en 5 segundos o Control-C para cancelar.
+ /bin/docker stop -t 30 app
app

Se encontraron 0GB de memoria y 1 núcleo de CPU físico
estableciendo db_shared_buffers = 0MB
estableciendo UNICORN_WORKERS = 0
Parámetros de memoria de containers/app.yml actualizados.

continuando, pasando todos los parámetros de configuración y finalmente construyendo… esto debería ser la pista que estás buscando

2021-08-03 10:30:37.709 GMT [55] LOG:  0 8kB está fuera del rango válido para el parámetro "shared_buffers" (16 .. 1073741823)
2021-08-03 10:30:37.713 UTC [55] FATAL:  el archivo de configuración "/etc/postgresql/13/main/postgresql.conf" contiene errores

¡Eso no es una buena señal! Ese número debería provenir directamente de la salida de

free -g --si | awk ' /Mem:/  {print $2} '

Eso reporta 703 MB, lo cual es (oficialmente) demasiado pequeño para que Discourse funcione correctamente. Si quieres vivir peligrosamente (¡y sin soporte!), podrías editar el número mágico 990 en

Creo que necesitas una instancia más grande con más RAM.

Sí, hasta ahora la instancia funcionaba correctamente y ya estaba instalada con la verificación de memoria desactivada. De alguna manera, está relacionado con esta publicación: Discourse won't install because I have 960MB of ram and not 1GB - Discourse System Administration - Unix Linux Community

El archivo de configuración sigue teniendo la verificación desactivada, pero supongo que se sobrescribe. Intentaré modificar el valor como indicaste y informaré lo que suceda.

Hmm, depende mucho de lo que hayas hecho allí.

He logrado completar la configuración y la reconstrucción. Los pasos han sido:

  • Comentar la verificación de memoria (#check_disk_and_memory) en /var/discourse/discourse-setup (no estoy seguro si esto es necesario)
  • Ejecutar el comando sudo ./discourse-setup desde la carpeta /var/discourse (esto generará el archivo /var/discourse/containers/app.yml e intentará continuar con la compilación, que fallará como se describió anteriormente)
  • Editar app.yml para establecer explícitamente db_shared_buffers: “128MB” y UNICORN_WORKERS: 1
  • Iniciar una reconstrucción con sudo ./launcher rebuild app (desde la carpeta /var/discourse)

Sé que esto está al límite de los requisitos, pero mantendré un ojo atento en el comportamiento de la instancia.

Gracias por el apoyo.

Me alegra que hayas resuelto el problema. En el hilo enlazado y en el hilo al que hace referencia, me parece mucho más preferible cambiar el número “mágico de perdón” de 990 por el valor que representa tu propio sistema. “Desactivar la verificación de memoria” en realidad está causando problemas.

Está claro para mí que el equipo de Discourse necesita establecer un límite inferior de algún valor, para trazar una línea entre configuraciones compatibles e incompatibles, y lo han establecido formalmente en 1 GB, con una relajación a 990. Pero 960 me parece bastante cercano a 990, y surge por razones similares. Por otro lado, 703 parece muy diferente.

Hola Ed,

Estoy de acuerdo, cambiaré el número. Me sorprende bastante que la memoria sea tan baja. Las especificaciones de la instancia de Oracle (nivel gratuito) indican 1 GB de memoria, pero el nivel gratuito ofrece solo alrededor del 60-70 % de esa cantidad. Estoy un poco confundido y no sé la razón de ello.

Ya se ha mencionado antes: creo que Oracle está haciendo las cosas mal, ofreciéndote mucho menos de 1 GB, aunque lo redondean al describirlo:

Edición: consulta el blog enlazado:

Quizás la instrucción más importante que falta es no usar la imagen predeterminada del servidor. Discourse requiere 1 GB de RAM (o algo así aquí) y, por alguna razón, la imagen de Oracle Linux no deja suficiente memoria. No sé si CentOS funcionará, pero la imagen de Ubuntu sí. Solo asegúrate de elegir la instalación completa2 en lugar de la instalación “Mínima”.

Sospecho que Oracle Linux por defecto incluye un montón de cosas que no son necesarias para instalar Discourse. Presumiblemente, su caso de uso principal es alojar servidores de bases de datos de Oracle. :wink: Afortunadamente, la imagen de Ubuntu funciona perfectamente. Mi sitio de pruebas/host de comentarios sigue en funcionamiento. (Aunque no hay mucha actividad.)