GNU/Linux >> Tutoriels Linux >  >> Linux

Les binaires linux-x64 ne peuvent pas être utilisés sur l'erreur de plate-forme linuxmusl-x64

Cela est dû au fait que vous exécutez docker sur une plate-forme Linux et votre machine est probablement mac ou windows. La plupart du temps, vous pouvez utiliser les mêmes versions de module, mais pas lorsqu'il utilise des fonctions de noyau de bas niveau comme sharp .

Vous avez besoin d'une autre version de Sharp sur Docker et sur votre ordinateur local.

Vous avez probablement exécuté votre projet sans docker, puis avec docker.

Solution 1 : Vous pouvez supprimer le dossier package.lock + node_modules puis le reconstruire et n'utiliser plus que docker.

Solution 2 : (pas propre mais peut aider) Supprimer Sharp de votre package.json et installez-le plus tard lorsque vous démarrez votre serveur. Par exemple en mettant à jour votre package.json :

paquet.json

{
  ...
  "scripts": {
    ...
    "start-docker": "yarn add sharp && nodemon index.js"
  },
  ...

vous pouvez également le faire dans votre fichier Dockerfile :

Fichier Docker

FROM node:13
ADD package.json /package.json
RUN yarn install
RUN yarn add sharp
ENV NODE_PATH=/node_modules
ENV PATH=$PATH:/node_modules/.bin
WORKDIR /app
CMD ["yarn","start-docker"]

J'ai rencontré le problème avec le fichier docker à plusieurs étapes où les deux images sont basées sur des plates-formes différentes et je l'ai résolu comme ceci :

FROM node:14 AS builder
WORKDIR /app
COPY ./package.json ./
RUN npm install
COPY . .
RUN npm run build

FROM node:14-alpine
WORKDIR /app
COPY --from=builder /app ./
RUN npm install sharp
CMD ["npm", "run", "start:prod"]

L'astuce consiste à installer run npm install sharp dans le conteneur final - dans mon cas, c'était Alpine Linux qui est différent de l'image de base de node:14 (évidemment, c'est une plate-forme différente). Sharp est compilé directement sur certaines plates-formes, exécutant donc npm install dans un conteneur et copier ces fichiers compilés/précompilés dans un autre conteneur ne peut pas fonctionner. Je suppose que c'est encore une meilleure solution que de revenir à l'image node:14 (uniquement le conteneur d'exécution) qui est bien plus grande (dans mon cas 1,4 Go -> 0,7 Go Alpine).

Gardez à l'esprit que vous devriez toujours avoir le fichier .dockeringore avec node_modules ne vous aidera pas à résoudre ce problème. Il accélère simplement la création de processus avec un cache sur le serveur CI ou sur localhost (avec un système d'exploitation différent).

Bravo


J'ai rencontré la même erreur avec Docker. Le problème était que j'avais oublié d'inclure un .dockerignore fichier et mon node_modules étaient en cours de copie dans le conteneur.

Essayez de créer un .dockerignore à la racine de votre projet (à côté de votre Dockerfile) avec par exemple :

node_modules
npm-debug.log
Dockerfile
.dockerignore
.git
.gitignore

Linux
  1. Erreur de configuration de phpize :impossible de trouver les sources (config.m4)

  2. R1Soft :Une erreur s'est produite lors du chargement du module hcpdriver

  3. Erreur CMake :les variables suivantes sont utilisées dans ce projet, mais elles sont définies sur NOTFOUND

  4. Erreur dans Eclipse :le projet ne peut pas être généré tant que les erreurs de chemin de génération ne sont pas résolues

  5. Impossible de trouver l'erreur pkg-config

Comment réparer:"Échec de la récupération du cdrom apt-get update ne peut pas être utilisé pour ajouter de nouveaux CD-ROM" Erreur

WAZUH La plateforme de sécurité open source

Mise à niveau partielle vers 16.04.3 Erreur Lts Impossible de créer un réveil ?

ERREUR :ld.so :l'objet LD_PRELOAD ne peut pas être préchargé :ignoré

Erreur lors de la tentative d'utilisation de Xorg :seuls les utilisateurs de la console sont autorisés à exécuter le serveur X ?

Obtention de l'erreur :bash :./programme :impossible d'exécuter le fichier binaire :erreur de format Exec