문제: 잘되던 도커빌드가 갑자기 안됐다. 더 이상한것은 로컬환경에서는 잘 되고 ubuntu 환경에서도 몇가지 추가하니까 되는데 도커에서만 빌드가 안되었다는 것.
시도1) 다음 세 문구를 추가해서 도커가 아닌 일반 우분투 환경에서 빌드를 시도해 봤다.
npm cache clean --force, rm -rf node_modules, rm -f package-lock.json
결과: 우분투 환경에서는 실행되는걸 확인할 수 있었지만 도커파일에 해당 문구를 추가해도 빌드가 잘 되지 않았다.
하지만 이 시도로 패키지 버젼이 잘 맞지 않아 생긴 문제라는 것을 확인할 수 있었다.
시도2) 버전 변경:
추가적인 시도 끝에 recoil-undo라는 패키지가 현재 리액트 버전과 맞지 않는다는 것을 확인할 수 있었다.
recoil-undo는 리액트16.14.0와 호환가능하고 나머지 패키지는 18.2.0과 호환 가능하다.
프론트 담당자인 Hatem이 이 recoil-undo를 다른 것으로 교체했다.
그리고 모든 버전을 정확하게 맞춘뒤 도커파일을 npm install --legacy peer depps 에서 npm install로 바꿨다.
결과: 해당 에러는 해결했지만 계속 빌드가 되지 않았다. 새로운 에러가 있는것으로 확인이 되었다.
시도3) 폴더 확인:
확인결과 프론트에서는 lib이라는 폴더에 있는 디펜던시 파일을 불러오고 있었는데, 이 lib이라는 폴더 자체가 ubuntu환경에서 확인되지 않았다.
알고보니 .gitignore에서 lib폴더가 anounced되어 있어서 메인브랜치에 merge 되지 않았던 것.
결과: 다급하게 lib 폴더 gitignore을 풀고 머지했고 도커빌드를 성공할 수 있었다.
현재 프론트 도커파일
FROM node:16 as builder
ARG CLIENT_NAME
# set work directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY ./front/package.json .
RUN npm install
# add app
COPY ./front .
# build app
RUN npm run build
CMD ["npm", "run", "dev"]
PS. 진짜 인간적으로 열심히 Til좀 쓰자...