Docker Alpine Linux에서 nvm 사용 가능
해결책
다음은 Docker file입니다. Alpine linuxnvm로 처리할 수 있습니다.
Dockerfile(alpine)
FROM alpine
# nvmのインストールに必要なモノとnodeのコンパイルに必要なモノをインストール
RUN apk add -U curl bash ca-certificates\
openssl ncurses coreutils python2\
make gcc g++ libgcc linux-headers\
grep util-linux binutils findutils
# shellをbashに変更
SHELL [ "/bin/bash", "-c" ]
# nvmをインストール
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
# lts版のnodeをインストール
RUN . $HOME/.nvm/nvm.sh && \ # 環境変数を適用
nvm install -s --lts && \ # nodeをインストール&ビルド
nvm use --lts && \ # 使用するnodeのバージョンを設定
node -v && npm -v && \ # バージョンの確認
npm i -g yarn # yarnも一応インストール
# nvmの初期化するように.bashrcに書き込む
RUN echo -e "\
export NVM_DIR=\"\$HOME/.nvm\"\n\
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"\n\
" >> ~/.bashrc
# bashをデフォルトに設定する
ENTRYPOINT [ "/bin/bash" ]
Ubuntu 버전
ubuntu를 사용할 수 있다면 더욱 간단하게 설정할 수 있습니다.
Dockerfile(ubuntu)
FROM ubuntu:20.10
RUN apt update
# nvmのインストールに必要なモノをインストール
RUN apt install -y curl git
# shellをbashに変更
SHELL [ "/bin/bash", "-c" ]
# nvmをインストール
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
# lts版のnodeをインストール
RUN . $HOME/.nvm/nvm.sh && \
nvm install --lts && \
nvm use --lts && \
node -v && npm -v && \
npm i -g yarn
구체적인 해설
alpine 버전에 nvm를 보통 설치하고 node를 설치하면 오류가 발생합니다😢 알피니언 버전에는 최소한의 필수품만 담겨있기 때문에 당연하다고 하지만 공식적인 창고에는 이유가 적혀 있으니 제가 소개해 드리겠습니다.
상기 nvm의 창고에서 인용한 것은 다음과 같다👇
Alpine Linux, unlike mainstream/traditional Linux distributions, is based on BusyBox, a very compact (~5MB) Linux distribution. BusyBox (and thus Alpine Linux) uses a different C/C++ stack to most mainstream/traditional Linux distributions - musl. This makes binary programs built for such mainstream/traditional incompatible with Alpine Linux, thus we cannot simply nvm install X on Alpine Linux and expect the downloaded binary to run correctly - you'll likely see "...does not exist"errors if you try that.
There is a -s flag for nvm install which requests nvm download Node source and compile it locally.
한 마디로 하면,alpine는 node를 설치해서 구축해야 합니다!그렇습니다.
따라서
nvm install
시-s
는 반드시 납품 옵션을 통해 구축해야 한다.node 빌딩은 시간이 오래 걸려요!내 환경
2125.8s
(35분 소요)🤪Docker file의 주의 사항
오류 발생 예
# 環境変数を適用
RUN . $HOME/.nvm/nvm.sh
# lts版のnodeをインストール
RUN nvm install -s --lts
위에서 말한 바와 같이 단독RUN
에서 nvm 초기화와 node 설치를 실행할 때nvm: command not found
이런 오류가 발생할 수 있으니 주의하세요.
올바른 방법은 반드시 통일적으로 집행해야 한다는 것이다👇
오류가 발생하지 않는 예
# 環境変数を適用し、lts版のnodeをインストール
RUN . $HOME/.nvm/nvm.sh && nvm install -s --lts
최후
nvm를 사용하지 말고 연상 같은 것을 사용하는 것이 좋다😕
결과적으로 구축 시간이 너무 길어서 사용할 수 없습니다😒
ubuntu 버전이면 구축 안 해도 돼요. 한번 써봐도 돼요...
여기까지 읽어주셔서 감사합니다.🙏
기사가 잘못됐다면 리뷰 등을 통해 말해줬으면 좋았을 텐데.
이게 다른 사람의 참고가 되었으면 좋겠어요.
그럼 이따 봐요.👋
Reference
이 문제에 관하여(Docker Alpine Linux에서 nvm 사용 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/uttk/articles/a7b085c7774ae9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)