GNU/Linux >> Belajar Linux >  >> Linux

binari linux-x64 tidak dapat digunakan pada kesalahan platform linuxmusl-x64

Ini disebabkan oleh fakta bahwa Anda menjalankan docker pada platform Linux dan mesin Anda mungkin mac atau windows. Sebagian besar waktu Anda dapat menggunakan versi modul yang sama tetapi tidak ketika menggunakan fungsi kernel tingkat rendah seperti sharp .

Anda memerlukan versi Sharp yang berbeda di Docker dan di mesin lokal Anda.

Anda mungkin telah menjalankan proyek Anda tanpa buruh pelabuhan, lalu dengan buruh pelabuhan.

Solusi 1: Anda dapat menghapus folder package.lock + node_modules lalu membangun kembali dan sekarang hanya menggunakan docker.

Solusi 2: (tidak bersih tapi bisa membantu) Hapus Sharp dari Anda package.json dan instal nanti ketika Anda memulai server Anda. Misalnya dengan memperbarui package.json Anda:

paket.json

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

Anda juga dapat melakukannya di file Dockerfile Anda:

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

Saya menghadapi masalah dengan file buruh pelabuhan multi-tahap di mana kedua imagse didasarkan pada platform yang berbeda dan saya menyelesaikannya seperti ini:

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

Caranya install run npm install sharp dalam wadah terakhir - dalam kasus saya itu adalah Alpine linux yang berbeda dari gambar dasar node:14 (jelas ini adalah platform yang berbeda). Sharp dikompilasi langsung ke platform tertentu sehingga menjalankan npm install dalam satu wadah dan salin file yang dikompilasi / dikompilasi ke wadah lain tidak dapat berfungsi. Saya menganggap ini masih solusi yang lebih baik daripada fallback ke gambar node:14 (hanya menjalankan container) yang jauh lebih besar (dalam kasus saya 1,4Gb -> 0,7Gb Alpine).

Ingatlah bahwa Anda masih harus memiliki file .dockeringore dengan node_modules tidak akan membantu Anda menyelesaikan masalah ini. Ini hanya mempercepat pembangunan proses dengan cache di server CI atau di localhost (dengan OS berbeda).

Salam


Saya menghadapi kesalahan yang sama dengan Docker. Masalahnya adalah saya lupa menyertakan .dockerignore file dan node_modules saya sedang disalin ke dalam penampung.

Coba buat .dockerignore file di root proyek Anda (di sebelah Dockerfile Anda) dengan mis.:

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

Linux
  1. Bagaimana mengatasi kesalahan sudoers – “maaf, Anda harus memiliki tty untuk menjalankan sudo”

  2. Kesalahan OpenCA Tidak dapat memuat sertifikat dari database

  3. Bagaimana Menjalankan Perintah Sebagai Administrator Sistem (root)?

  1. Upgrade Sebagian Ke 16.04.3 Kesalahan Tidak Dapat Membuat Bangun?

  2. R1Soft :Terjadi kesalahan saat memuat modul hcpdriver

  3. Kesalahan CMake:Variabel berikut digunakan dalam proyek ini, tetapi disetel ke NOTFOUND

  1. Kesalahan di Eclipse:Proyek tidak dapat dibangun sampai kesalahan jalur pembangunan diselesaikan

  2. KESALAHAN:ld.so:objek LD_PRELOAD tidak dapat dimuat sebelumnya:diabaikan

  3. Bagaimana saya bisa mengatasi kesalahan tidak dapat mengeksekusi file biner?