web-dev-qa-db-fra.com

standard_init_linux.go: 190: le processus utilisateur exec a provoqué "aucun fichier ou répertoire de ce type" - Docker

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
18
gamechanger17

Utilisez notepad ++, allez dans edit -> Conversion EOL -> changez de CRLF en LF.

24
Vikas Rathore

changer le point d'entrée comme ci-dessous. Ça a fonctionné pour moi

ENTRYPOINT ["sh","/run.sh"]
24
prity

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

9
KirKone

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
1
Amine_Dev

Remplacement de CRLF par LF à l'aide de Notepad ++

  1. La fonction Rechercher/Remplacer de Notepad ++ gère parfaitement cette exigence. Ouvrez simplement le dialogue Remplacer (CTRL + H), sélectionnez Mode de recherche étendue (ALT + X), recherchez “\ r\n” et remplacez-le par “\ N”: 
  2. Hit Remplacer Tous (ALT + A)

Reconstruire et exécuter l'image de menu fixe devrait résoudre votre problème.

1
Rajesh Samson

Ajoutez ceci à votre fichier Docker

RUN cat /run.sh | tr -d '\r' > /run.sh
0