Lorsque j'exécute mon image de menu fixe sur Windows 10. Je reçois le message d'erreur suivant:
standard_init_linux.go:190: exec user process caused "no such file or directory"
mon fichier docker est:
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"]
et le script commence par #!/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.jar
Essayé method1: J'ai essayé de changer #!/Bin/sh en #!/Bin/bash mais en obtenant la même erreur.
Essayé method2: Ajouté dos2unix dans le fichier docker
RUN apt-get install -y dos2unix
RUN dos2unix /run.sh
Utilisez notepad ++, allez dans edit -> Conversion EOL -> changez de CRLF en LF.
changer le point d'entrée comme ci-dessous. Ça a fonctionné pour moi
ENTRYPOINT ["sh","/run.sh"]
dans mon cas, j'ai dû changer la ligne se terminant de CRLF
à LF
pour le fichier run.sh
et l'erreur a disparu.
J'espère que ça aide,
Kirsten
C'est un problème de CRLF. J'ai résolu le problème en utilisant ceci:
git config --global core.eol lf
git config --global core.autocrlf input
find . -type f -print0 | xargs -0 dos2unix
Remplacement de CRLF par LF à l'aide de Notepad ++
Reconstruire et exécuter l'image de menu fixe devrait résoudre votre problème.
Ajoutez ceci à votre fichier Docker
RUN cat /run.sh | tr -d '\r' > /run.sh