Bonne journée, j'essaie de créer une image docker pour un backend web nodejs qui ressemble actuellement à ceci:

FROM node:10-alpine

WORKDIR /usr/src/smart-brain-api

COPY ./ ./

RUN npm install

CMD ["/bin/bash"]

Quand je fais "docker run -it" après avoir construit l'image, j'obtiens cette erreur bizarre

internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module '/bin/bash'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

Cependant si j'édite le fichier docker et que je change CMD ["/ bin / bash"] en CMD ["/ bin / sh"] tout fonctionne

Je travaille sur un macbook air 13 ', je ne sais pas si cela pourrait être un facteur.

0
miles-blaq 31 août 2020 à 09:49

3 réponses

Meilleure réponse

alpine images n'ont pas bash installé par défaut. Vous devez l'installer séparément.

RUN apk update && apk add bash

Comment utiliser bash avec une image docker basée sur Alpine?

3
Harsh Gupta 31 août 2020 à 06:51

Comme l'autre réponse l'a dit, vous devez d'abord installer bash car alpine n'est pas livré avec bash installé. Vous devez l'installer avec:

RUN apk update && apk add bash

Ensuite, vous pouvez basculer le shell par défaut de sh à bash avec cette ligne dans votre dockerfile

SHELL ["/bin/bash", "-c"]

Le fichier docker devrait ressembler à quelque chose comme ceci

FROM node:10-alpine
RUN apk update && apk add bash
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
CMD bash # If you want to override CMD

Ensuite, vous pouvez lancer votre conteneur avec cette ligne

docker run -it --rm <image-name> bash

Ou si vous avez écrasé CMD, vous pouvez simplement faire

docker run -it --rm <image-name>
0
severin.julien 31 août 2020 à 07:29

Vous pouvez essayer un which bash dans votre conteneur de travail, mais il n'y a probablement pas de Bash dans cette image de conteneur.

Essayez d'utiliser une image moins fine.

0
Olivier Lépine 31 août 2020 à 06:54