Docker

Docker build 시 bcrypt 에러 해결 방법 Error: Error loading shared library...

바삭바삭감튀 2023. 10. 29. 03:19

배경

bcrypt  bcryptjs와 다르게 C++으로 라이브러리가 만들어져있다.

bcrypt는 node에 기본적인 모듈을 사용한다.

docker build시 node:xx-alpine 를 사용한다.


원인

bcrypt가 node에서 C++로 구성된 제공하는 모듈을 사용하는데 이 때 node의 alpine 버전을 설치하면

사용되는 Dependencies가 없어서 에러가 나타난다.

 


해결 방법

dockerfile을 수정 한다

  1. yarn install 명령어 이후 한번 더 bcrypt를 설치한다. 
  2. multistage-build를 사용하여 용량을 줄이고 빌드를 진행한다.

Docker multistage-build 설명 
multistage-build는 빌드에 사용하는 Dependencies만 가져오기 때문에 용량을 줄일수 있다.

수정 이전 dockerfile

//이전 Dockerfile
FROM node:18-alpine

WORKDIR /app
COPY . .

RUN yarn build

ENV HOST 0.0.0.0
EXPOSE 3000

CMD ["yarn", "start"]

 


 수정 이후 dockerfile

//수정된 dockerfile
FROM node:18-alpine

WORKDIR /app
COPY . .

RUN yarn build
RUN yarn add bcrypt 

FROM node:18-alpine
WORKDIR /app
COPY --from=0 /app /app

ENV HOST 0.0.0.0
EXPOSE 3000

CMD ["yarn", "start"]
728x90
반응형