작성
·
7.9K
0
강의의 내용와 조금 동떨어진 질문일 수 있지만 글 올려 봅니다. 무관하시다 생각하시면 답변 달아주지 않으셔도 좋습니다.
auth 기능을 로컬에서 구현 후, dockerizing 하는 부분에서
Error: Error loading shared library /gateway/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: Exec format error
와 같은 에러가 나서 구동되지 않습니다. Dockerfile 은
FROM node:12-alpine
RUN apk update && apk add --no-cache curl vim bash
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
이고, bcrypt 는
npm i bcrypt
npm i -D @types/bcrypt
로 하여 설치하였습니다.
container 안에서
npm i bcrypt
npm i -D @types/bcrypt
명령어를 이용해서 bcrypt 를 다시 설치하면,
정상적으로 구동됩니다.
답변 1
1
네 alpine에서 bcrypt가 설치 안 될 수 있습니다. native module 사용하는데 거기에 필요한 디펜던시들이 alpine에서 없을 수 있어서요. 저는 그럴 때 그냥 node에서 빌드하고 multistage-build 사용해서 node:alpine으로 빌드 결과물만 복사해옵니다.
답변 감사드립니다.
어쩔 땐 되고 어쩔 땐 안되는 이유가 있었나 보네요..
방금 같은 에러가 나서 docker exec 로 bcrypt 를 수동으로 설치를 한 번 더 해주니, 잘 구동이 되네요.
Docker 에 조예가 없어, 답변해주신 내용이 완벽히 이해가 가지 않지만,
alpine 이미지를 사용할 때는 node_modules 과 dist 까지 복사해서 가져간다고 이해해도 될까요.
alpine 을 선택한건 최대한 경량의 컨테이너를 띄우고 싶어였는데, 다른 이미지로 테스를 한 번 해봐야겠네요.
감사합니다.