Cuando estoy ejecutando mi imagen acoplable en Windows 10, recibo este error:
standard_init_linux.go:190: exec user process caused "no such file or directory"mi archivo docker es:
FROM openjdk:8 EXPOSE 8080 VOLUME /tmp ADD appagent.tar.gz /opt/app-agent ADD services.jar app.jar ADD run.sh /run.sh # Install compiler and perl stuff RUN apt-get update RUN apt-get install -y build-essential RUN apt-get install -y gcc-multilib RUN apt-get install -y perl # Install Percona Toolkit RUN apt-get install --yes percona-toolkit RUN ["chmod", "+x", "/run.sh"] ENTRYPOINT ["/run.sh"]y el script comienza con #!/bin/sh
#!/bin/sh set -e JAVA_OPTS="-Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/urandom" if [ "${APPD_APP_NAME}" != "" ]; then JAVA_AGENT="-javaagent:/opt/app-agent/javaagent.jar fi exec java ${JVM_OPTS} ${JAVA_OPTS} ${JAVA_AGENT} -jar /app.jarMétodo probado 1: Intenté cambiar #!/bin/sh a #!/bin/bash pero obtuve el mismo error.
Método probado 2: agregado dos2unix en el archivo docker
RUN apt-get install -y dos2unix RUN dos2unix /run.shUse el bloc de notas ++, vaya a editar -> conversión EOL -> cambie de CRLF a LF.
actualización: para usuarios de VScode: puede cambiar CRLF a LF haciendo clic en CRLF presente en la parte inferior derecha de la barra de estado
cambie el punto de entrada como se muestra a continuación. funcionó para mí
ENTRYPOINT ["sh","/run.sh"]Como señaló tuomastik en los comentarios , los documentos requieren que el primer parámetro sea el ejecutable:
ENTRYPOINT tiene dos formas:
ENTRYPOINT ["executable", "param1", "param2"](formulario ejecutivo, preferido)
ENTRYPOINT command param1 param2(formulario de shell)
Tuve el mismo problema al usar la imagen alpine .
Mi archivo .sh tenía la siguiente primera línea:
#!/bin/bashAlpine no tiene bash. Así que cambiando la línea a
#!/bin/sho instalando bash con
apk add --no-cache bashresolvió el problema para mí.