Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

875
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda