Tenía una imagen acoplable que se estaba construyendo con éxito durante meses. Sin embargo, desde el 17 de diciembre me encontré con el error que se muestra en la salida de la consola de Jenkins a continuación. Nada ha cambiado en el archivo acoplable, por lo que claramente tiene algo que ver con el entorno subyacente, tengo un servidor Jenkins ejecutándose en AWS EC2. Lo extraño es que todos los demás paquetes se instalan bien sin ninguna referencia a R_HOME, es solo la instalación del paquete XML la que falla
Intenté establecer explícitamente R_HOME en el archivo acoplable según este hilo , pero no tuve suerte.
ENV R_HOME /usr/lib/REtapa de Jenkins
stage ('Build docker image') { steps { dir ('DockerImage') { sh 'docker-compose build' } } }Salida de la consola Jenkins
Step 17/20 : RUN R -e "install.packages('XML')" ---> Running in cfc007e0ce94 [91mERROR: R_HOME ('/usr/lib/R') not foundDockerfile
# Run executable JAR in Linux FROM cardcorp/r-java # Set R and jri PATH ENV LD_LIBRARY_PATH "$LD_LIBRARY_PATH:/usr/bin/:/usr/lib/R/site-library/rJava/jri/" # Install packages in R RUN R -e "install.packages(c('data.table', 'Rcpp', 'zoo'))" RUN R -e "install.packages('foreach')" RUN R -e "install.packages('doParallel')" RUN R -e "install.packages('signal')" RUN R -e "install.packages('bitops')" RUN R -e "install.packages('matlab')" RUN R -e "install.packages('GENEAread')" RUN R -e "install.packages('tuneR')" RUN R -e "system('apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABC')" RUN R -e "system('apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XYZ')" RUN R -e "system('apt-get update && apt-get install -y gcc-8-base apt-transport-https')" RUN R -e "system('apt-get install -y libxml2-dev')" RUN R -e "install.packages('XML')"Editar: Mirando la marca de tiempo de cuando comenzó a ocurrir el problema, descubrí que había una versión de Debian que coincide con mi problema. Me pregunto si es posible especificar la versión de Debian para usar en el archivo Docker
En mi caso, rastreé el problema para test -x no funciona. El /usr/bin/R lo usa para comprobar si existe la carpeta /usr/lib/R .
La búsqueda de soluciones a esto me envió a varios informes de errores en Ubuntu, pero logré resolver el problema actualizando la versión de Docker. Mi host Docker es Centos, no Ubuntu como en la mayoría de los informes de errores, sin embargo, mi contenedor está basado en Ubuntu.
Las cosas volvieron a funcionar después de actualizar Docker a los siguientes paquetes:
Upgraded: containerd.io-1.4.12-3.1.el8.x86_64 docker-ce-3:20.10.12-3.el8.x86_64 docker-ce-cli-1:20.10.12-3.el8.x86_64 docker-scan-plugin-0.12.0-3.el8.x86_64 Installed: docker-ce-rootless-extras-20.10.12-3.el8.x86_64 fuse-overlayfs-1.7.1-1.module_el8.5.0+890+6b136101.x86_64 fuse3-3.2.1-12.el8.x86_64 fuse3-libs-3.2.1-12.el8.x86_64 libslirp-4.4.0-1.module_el8.5.0+890+6b136101.x86_64 slirp4netns-1.1.8-1.module_el8.5.0+890+6b136101.x86_64Ver: