Hola Comunidad! El inconveniente que estamos teniendo, es que al querer autorizar (cerrar) un documento que tiene alrededor de 16Mb en archivos adjuntos, el sistema aborta la autorización quedando el documento pendiente de autorización. (con un solo documento de 8Mb autoriza normalmente)
Al mirar los logs del container de docs.api me encuentro que el problema pareciera ser que se soluciona (no estoy seguro) incrementando el valor del memory_limit del php.ini, pero el inconveniente que tengo es que no puedo hacer esa modificación sea efectiva por estar el php.ini dentro del contenedor.
El log del error en el container docs.api es el siguiente:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 22677248 bytes) in /usr/local/app/vendor/siu/rdi/RDILib/conectores/CMIS_ATOM/cmis_repository_wrapper.php on line 413
El valor del memory_limit actualmente es 128 Mb, lo modifico por un valor mayor, pero cuando reinicio el servidor, esa modificación no persiste…
Dejando de lado otras cuestiones, te respondo por lo puntual del contenedor.
El cambio supongo que lo hiciste personalizando el archivo php.ini adentro del contenedor en ejecución, no? En un ambiente de contenedores, con docker-swarm como orquestador, esto no funciona así. Los contenedores son stateless o sin estado. Es decir, al reiniciar, todo lo que no sea parte de la imagen se pierde porque en general se lanza una nueva instancia del contenedor.
Si quisieras que desde su creación te tome un valor distinto para memory_limit por ej, tendrías que hacer una de las dos opciones:
construir una nueva imagen, basandote en la original, personalizando el php.ini en cuestión
en el momento de correr el contenedor (ya sea con docker run … o dentro de una definición de un service con docker swarm) tendrías que sobreescribir el php.ini con uno externo.
Sólo un comentario, tengan en cuenta que “montar como volumen un archivo” no funciona si operan en más de un nodo SWARM (a priori, de acuerdo al esquema que mostras). La solución a esto sería:
transformar tu configuración a un “docker config” tal y como se hace con el archivo certificado.crt por ejemplo.
menos eficiente, pero funcional, que el volumen esté mapeado en un filesystem compartido…