Actualización cuando el espacio es escaso: ¿detener la app, luego limpiar, luego reconstruir la app?

Hola, gente. Esta parece una pregunta tonta, pero la haré de todos modos.

Estaba atascado en este bucle familiar:

  1. La actualización falló.
  2. Intenté ./launcher rebuild app, pero no había suficiente espacio en disco. (Menos de 5 GB libres).
  3. Ejecuté ./launcher cleanup, que pareció liberar algo de espacio en disco. (Más de 5 GB libres).
  4. VOLVER AL PASO 2.

Como todavía no sé qué operaciones son seguras (es decir, no destruirán los datos de mi sitio), me moví con cautela, esperando no necesitar restaurar desde una copia de seguridad. Terminé haciendo esto y pareció funcionar para mí.

  1. ./launcher stop app
  2. ./launcher cleanup, que limpió significativamente más espacio que antes, lo que inmediatamente me puso nervioso.
  3. git pull
  4. ./launcher rebuild app

Esto no solo funcionó, sino que resultó en un sitio en funcionamiento con los datos intactos y con aproximadamente 2 GB más de espacio libre que antes.

Ahora no estoy seguro de si lo que hice fue brillante, obvio o arriesgado y simplemente funcionó. Me gustaría entender un poco mejor por qué obtuve los resultados que obtuve y si esa fue una forma sensata de actualizar.

Muchas gracias.

1 me gusta

docker crea un montón de archivos cuando crea un contenedor (incluye los contenedores que crea) cuando creas un nuevo contenedor, todavía tienes los contenedores antiguos (y también las imágenes de disco). Eso es lo que se elimina cuando haces una limpieza.

Es un poco más seguro ejecutar el comando de limpieza mientras Discourse se está ejecutando, porque el comando de limpieza no eliminará un contenedor en ejecución. Si algo sale mal con la reconstrucción, aún puedes reiniciar el contenedor antiguo si existe.

Por lo tanto, eliminaría el paso (1) anterior y el paso (3) es innecesario porque ./launcher hace un pull (en los viejos tiempos, no lo hacía).

Podría estar equivocado, pero ¿no resultaría eso en los mismos dos pasos que en el primer bloque que no funcionaba? (2-4):

Como nota al margen, esto se parece un poco más a este tema:

2 Me gusta

Oops. Sí. No lo había releído.

Así que sí, si tu espacio en disco está tan ajustado que no tienes espacio para dos imágenes, entonces necesitas destruirlas todas antes de construir una nueva, lo que te pone en una mala situación si por alguna razón no puedes construir una nueva imagen. Si ese es el caso, realmente necesitas más espacio en disco. Lo más fácil es mover las copias de seguridad a S3.

1 me gusta

Me sorprende lo de “espacio en disco tan ajustado” en mi situación. Hago limpieza, tengo 7.9 GB libres, luego ejecuto ./launcher rebuild app y se niega a terminar. ¿Son 7.9 GB libres cuando quiero reconstruir la aplicación realmente tan poco?!

(ACTUALIZACIÓN: Ahora entiendo cómo puede suceder esto. Dejo esto aquí para que los observadores inocentes lo encuentren en una búsqueda web. ¡Por favor, lean todo este hilo, amigos!)

¡Gracias! ¡Este es, de hecho, el problema! Y este parece ser el punto clave: "Less than 5GB of free space" — not true! 👀 - #3 by Simon_Manning

En particular:

Para esta reconstrucción en particular, necesitaste descargar una nueva imagen base.

Sería particularmente útil incluir esta información de alguna manera en el proceso de actualización, ya sea como una advertencia anticipada “Necesitamos descargar una nueva imagen base, por lo que probablemente necesites 3 GB más de espacio de lo normal para actualizar. Si te quedas sin espacio, esa es probablemente la razón” o como un error más detallado cuando el proceso de actualización/reconstrucción se queda sin espacio. De lo contrario, terminamos en un bucle interminable de “¡Ahí! ¡Todo el espacio que (parece) que necesitas!” (Picard con el brazo extendido).

También sería particularmente útil no tener que buscar tanto para encontrar la opción de usar ./launcher rebuild app --skip-prereqs cuando quieres decir “Confía en mí, hermano. Tengo suficiente espacio en disco”. Sí, pon advertencias en negrita, rojo, fuente de 72 puntos.

Esta “nueva imagen base que hace que la actualización sea complicada” ocurre con poca frecuencia como para que la olvidemos, pero causa problemas durante la actualización. ¿Dónde es el lugar apropiado para un artículo sobre esto que centralice lo que sabemos sobre cómo solucionar los problemas?

Gracias.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.