Tuve un sitio grande que falló repetidamente al iniciar. Es una instalación de 2 contenedores, por lo que el contenedor antiguo siguió ejecutándose mientras se realizaba la migración durante el arranque. Finalmente resolví el problema activando SKIP_POST_DEPLOYMENT_MIGRATIONS=1 para el arranque y luego ejecutando las migraciones una vez que se inició el nuevo contenedor. Con SKIP_POST_DEPLOYMENT_MIGRATIONS=1 en la sección ENV, la migración fue muy rápida; el sitio pudo funcionar con normalidad (aunque quizás más lentamente) mientras se ejecutaban las migraciones, lo cual tomó, creo, más de 20 minutos.
Creo, aunque aún no lo he probado, que usar este mismo truco permitiría minimizar el tiempo de inactividad también en una instalación de un solo contenedor. Si tengo razón, lo que harías sería:
- agregar
SKIP_POST_DEPLOYMENT_MIGRATIONS=1a tuapp.yml - ./launcher rebuild app
- ./launcher enter app
- SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate
- deshacer la edición en
app.yml, a menos que planees recordar ejecutar las migraciones después de cada actualización - quizás volver a reconstruir para asegurarte de que no haya ningún problema mientras aún recuerdas qué podría haber roto tu sitio; si esperas 4 meses para intentarlo de nuevo, no tendrás idea y será difícil que alguien adivine cuál podría ser el problema
Si existiera una forma de que ./launcher pasara SKIP_POST_DEPLOYMENT_MIGRATIONS=1 a los componentes sin requerir una edición en app.yml, facilitaría las cosas para quienes tienen dificultades con la edición.
Si logro realizar el trabajo sobre esto que creo que haré, crearé un nuevo tema informando sobre lo que he descubierto. Aunque el humo me ha confinado a una habitación donde no tengo mi monitor grande. (¿Acaso la pandemia no fue suficiente? ¿Ahora también tenemos que lidiar con el humo? Y ni siquiera estoy particularmente cerca del maldito fuego.)