Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

879
Views
Docker con nodo bcrypt: encabezado ELF no válido

He probado todas las soluciones de esta publicación y esta publicación

No encuentro una solución para deshacerme del siguiente error al ejecutar docker-compose up :

 module.js:598 return process.dlopen(module, path._makeLong(filename)); ^ Error: /code/node_modules/bcrypt/lib/binding/bcrypt_lib.node: invalid ELF header

Aquí está mi último intento docker-compose.yml

 version: "2" services: app: build: ./client ports: - "3000:3000" links: - auth volumes: - ./client:/code auth: build: ./auth-service ports: - "3002:3002" links: - db volumes: - ./auth-service:/code db: ...

Y mi servicio de autenticación Dockerfile:

 FROM node:7.7.1 EXPOSE 3002 WORKDIR /code COPY package.json /code RUN npm install COPY . /code CMD npm start

Después de probar cada una de las soluciones de los dos enlaces anteriores, reconstruyo los contenedores y siempre da como resultado el mismo error.

También vale la pena señalar que el servicio funciona bien localmente, cuando no uso la ventana acoplable.

¿Cómo hago para que docker funcione con bcrypt?

Actualizar

Pude hacerlo funcionar haciendo lo siguiente:

  1. encontrar la identificación del contenedor: docker ps
  2. accediendo al contenedor: docker exec -t -i containerId /bin/bash
  3. instalar bcrypt: npm install bcrypt

Esto no es ideal para la portabilidad.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Pasé algunas horas tratando de resolver esto y al final se me ocurrió la siguiente solución. Mi archivo de composición se ve así...

 version: "3" services: server: build: context: ./server volumes: - ./server:/usr/src/app - /usr/src/app/node_modules/ ports: - 3050:3050 depends_on: - db command: ["nodemon", "./bin/www"]

El segundo montaje de volumen allí es el importante, ya que soluciona el problema del node_module local.

Solo como referencia, mi dockerfile es así:

 FROM node RUN npm install -g nodemon RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app RUN npm install EXPOSE 3050 CMD ["nodemon", "./bin/www"]
about 4 years ago · Santiago Trujillo Report

0

estaba luchando con esto unas cuantas veces, la solución ".dockerignore" no funcionará si usa volúmenes lamentablemente, ya que solo está relacionado con el comando "Copiar" y solo cuando construye el contenedor.

la única solución que encontré, que creo que tiene más sentido, es volumen solo lo que necesita, ¿qué significa? Divida su código fuente y los archivos de "configuraciones" (como package.json):

- origen
-- más código
-- máscódigo2
-- servidor.js
- índice.js
- paquete.json
- jslint.json
- tsconfig.json
- .env
- .dockerignore
- ... etc

y coloque el volumen solo en la carpeta "src", de esa manera sus compilaciones también serán mucho más rápidas y sus módulos de nodo se compilarán e instalarán en el sistema operativo correcto, no olvide agregar .dockerignore a node_modules para evitar que se formen compilaciones tomando más tiempo innecesario

tenga en cuenta que hacerlo requerirá la reconstrucción de la aplicación cada vez que agregue un nuevo paquete, pero si usa las mejores prácticas de npm y divide la instalación de npm en su archivo acoplable para almacenar en caché, será más rápido

about 4 years ago · Santiago Trujillo Report

0

La razón por la que ocurre este error es que el módulo de nodo bcrypt se compila primero en su máquina original (específica para su sistema operativo) y cuando se crea una imagen en la ventana acoplable, no se puede ejecutar porque el sistema operativo ya no es el mismo. solución cree un archivo .dockerignore en su carpeta raíz y agregue node_modules a este archivo.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!