GNU/Linux >> Tutoriales Linux >  >> Linux

Los binarios de linux-x64 no se pueden usar en el error de la plataforma linuxmusl-x64

Es causado por el hecho de que ejecutas docker en una plataforma Linux y su máquina probablemente sea Mac o Windows. La mayoría de las veces puede usar las mismas versiones del módulo, pero no cuando usa funciones de kernel de bajo nivel como sharp .

Necesita una versión diferente de Sharp en Docker y en su máquina local.

Probablemente haya ejecutado su proyecto sin docker, luego con docker.

Solución 1: Puede eliminar la carpeta package.lock + node_modules, luego reconstruir y ahora solo usar docker.

Solución 2: (no limpia pero puede ayudar)Eliminar Sharp de su paquete.json e instálelo más tarde cuando inicie su servidor. Por ejemplo, actualizando su paquete.json:

paquete.json

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

también puede hacerlo en su archivo Dockerfile:

Dockerfile

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"]

Enfrenté el problema con el archivo docker de varias etapas donde las dos imágenes se basan en diferentes plataformas y lo resolví así:

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"]

El truco es instalar ejecutar npm install sharp en el contenedor final:en mi caso, Alpine Linux es diferente a la imagen base del nodo:14 (obviamente, es una plataforma diferente). Sharp se compila directamente en cierta plataforma, por lo que se ejecuta npm install en un contenedor y copiar esos archivos compilados/precompilados a otro contenedor no puede funcionar. Supongo que esta es una solución aún mejor que recurrir al nodo:imagen 14 (solo ejecutar el contenedor) que es mucho más grande (en mi caso, 1,4 Gb -> 0,7 Gb Alpine).

Tenga en cuenta que aún debe tener el archivo .dockeringore con node_modules no lo ayudará a resolver este problema. Simplemente acelera la creación de procesos con caché en el servidor CI o en el host local (con un sistema operativo diferente).

Saludos


Enfrenté el mismo error con Docker. El problema fue que olvidé incluir un .dockerignore archivo y mi node_modules estaban siendo copiados en el contenedor.

Intenta crear un .dockerignore archivo en la raíz de su proyecto (junto a su Dockerfile) con, por ejemplo:

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

Linux
  1. Cómo resolver el error de sudoers:"lo siento, debe tener un tty para ejecutar sudo"

  2. Error de OpenCA No se puede cargar el certificado desde la base de datos

  3. No se puede compilar Python.h – Error de instalación de Websockify

  4. Error de configuración de phpize:no se pueden encontrar las fuentes (config.m4)

  5. ¿Cómo ejecutar un comando como administrador del sistema (raíz)?

Los 7 espacios de nombres de Linux más utilizados

Cómo solucionarlo:Error "Error al recuperar cdrom apt-get update no se puede usar para agregar nuevos CD-ROM"

WAZUH La plataforma de seguridad de código abierto

Cómo dejar de ejecutar la tecla de pantalla

Error al intentar usar Xorg:¿Solo los usuarios de la consola pueden ejecutar el servidor X?

Obteniendo el error:bash:./program:no se puede ejecutar el archivo binario:error de formato Exec