¿Sería posible convertir el parámetro shm_size en una opción en app.yml? Hoy encontré este error al intentar ejecutar un vacuum analyze:
ERROR: no se pudo redimensionar el segmento de memoria compartida
Estaba intentando aumentar el uso de shm a 1 GB y falló, ya que por defecto solo tiene 512 MB. Este parámetro parece estar en el script del lanzador, pero sería útil tenerlo como una opción (posiblemente comentada por defecto) en el archivo .yml.
Desafortunadamente, esto no funcionó cuando lo intenté. Creo que tal vez el contenedor necesita ser reconstruido para aumentar el tamaño del espacio de memoria compartida. Tuve que cambiar el valor en las áreas codificadas en el script del lanzador y luego reconstruir el contenedor para que realmente surtiera efecto.
Esto probablemente tampoco persistiría a través de actualizaciones/reconstrucciones; tendrías que cambiarlo manualmente cada vez.
Lo único que hice al principio fue detener el contenedor y luego ejecutar el comando de inicio del lanzador con ese parámetro. Después, edité manualmente los parámetros --shm-size dentro del propio script del lanzador y reconstruí el contenedor. Entonces, el valor se ajustó correctamente. Si anulas el parámetro en la línea de comandos para reconstruir el contenedor, ¿no se perderá el cambio si realizas una actualización o reconstrucción a través de la interfaz /admin/upgrade? Por eso pensé que podría ser mejor convertirlo en un campo en app.yml, así se mantendría a través de reconstrucciones y actualizaciones de código.
Entonces deberíamos solucionarlo, pero la corrección es un script de bash muy, muy complicado. Si quieres, puedes intentarlo.
Nuestra función de obtención de argumentos de Docker debería encargarse de shm-size, gestionar las anulaciones del usuario y establecer un valor predeterminado.
Mientras tanto (con fines de prueba, consulta la advertencia a continuación), puedes cambiar esto directamente con Docker después de que se haya creado el contenedor, de la siguiente manera:
Edita directamente el archivo /var/lib/docker/containers/$CONTAINER_ID/hostconfig.json.
Por ejemplo, cambia el valor de ShmSize en el archivo anterior.
Detén y reinicia el contenedor.
En nuestro archivo hostconfig del contenedor Docker, se ve así:
Advertencia: Algunas personas han publicado que debes asegurarte de que el servicio de Docker esté detenido antes de modificar hostconfig.json (de lo contrario, los cambios se sobrescribirán). Sin embargo, no he probado esto personalmente. Obviamente, una solución launcher es mejor