ああ!この磨かれた妖精!Node-sass dockerミラーにインストールされた正しい姿勢
1718 ワード
背景
最近筆者が発見したali_cloudのgitlab CICD buildフロントエンドvueエンジニアリングdockerミラーリングはずっと遅くて、速い時7、8分、遅い時40分、遅い時40分、遅い時40分以上の時に次のfailedをください
原因を捜す.
画面を上にしてdocker build imageのlog印刷プロセスを見ました...原因が見つかりました.ここに引っかかった
node-sass binaryパッケージtimeoutをダウンロードすることが多く、別の道を歩いてsourceをダウンロードし、長いgypコンパイルプロセスをします.
解決方法
次のnode-sassの公式サイトを調べてみると、binaryを取得するには、カスタムsiteとpathsass-binary-sitesass-binary-pathをサポートしています.これでやりやすいので、対応するバージョンのbinding.nodeファイルを自分でダウンロードし、DockerfileにSASS-Binary-PATHを加えることができます.これで、不安定な外網ダウンロードをする必要はありません.Dockerfileを見てみましょう
肝心なのはこの2行に加わった
結果
これで問題は解決し、docker buildは非常にスムーズです.以下のロゴを見ると、あなたの構成が有効になったことを示します.この環境変数を構成する方法は、スタンドアロンインストールにも適用されますよ.
最近筆者が発見したali_cloudのgitlab CICD buildフロントエンドvueエンジニアリングdockerミラーリングはずっと遅くて、速い時7、8分、遅い時40分、遅い時40分、遅い時40分以上の時に次のfailedをください
原因を捜す.
画面を上にしてdocker build imageのlog印刷プロセスを見ました...原因が見つかりました.ここに引っかかった
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-64_binding.node
node-sass binaryパッケージtimeoutをダウンロードすることが多く、別の道を歩いてsourceをダウンロードし、長いgypコンパイルプロセスをします.
解決方法
次のnode-sassの公式サイトを調べてみると、binaryを取得するには、カスタムsiteとpathsass-binary-sitesass-binary-pathをサポートしています.これでやりやすいので、対応するバージョンのbinding.nodeファイルを自分でダウンロードし、DockerfileにSASS-Binary-PATHを加えることができます.これで、不安定な外網ダウンロードをする必要はありません.Dockerfileを見てみましょう
FROM node:10.16.3 as builder
# Create and go into app home
WORKDIR /usr/src/app
COPY package.json ./
ARG envArg=devserver
RUN npm config set registry=https://registry.npm.taobao.org
RUN mkdir -p /usr/src/app/node-sass
COPY binding.node /usr/src/app/node-sass
ENV SASS_BINARY_PATH /usr/src/app/node-sass/binding.node
RUN npm install
COPY . .
肝心なのはこの2行に加わった
RUN mkdir -p /usr/src/app/node-sass
COPY binding.node /usr/src/app/node-sass
ENV SASS_BINARY_PATH /usr/src/app/node-sass/binding.node
結果
これで問題は解決し、docker buildは非常にスムーズです.以下のロゴを見ると、あなたの構成が有効になったことを示します.この環境変数を構成する方法は、スタンドアロンインストールにも適用されますよ.
\> [email protected] install /usr/src/app/node\_modules/node-sass
\> node scripts/install.js
node-sass build Binary found at /usr/src/app/node-sass/binding.node
...
\> [email protected] postinstall /usr/src/app/node\_modules/node-sass
\> node scripts/build.js
Binary found at /usr/src/app/node-sass/binding.node
Testing binary
Binary is fine