如何解决为什么 Yarn 在 Mac 的 Docker 上失败,但在 linux 中成功?
我有一个简单的 Dockerfile,它在 linux 上运行良好,但在 Mac 上只能运行失败。
失败的步骤是
RUN source /root/.bashrc && \
yarn && \
yarn build && \
yarn global add serve
完整的 Dockefile 是(已编辑)
FROM alpine:latest
WORKDIR /root
RUN apk update && \
apk upgrade && \
apk add git g++ gcc libgcc libstdc++ linux-headers make python2 aws-cli jq && \
apk update
#-- Download and compile specific nodejs version required (10.16.3)
RUN wget https://nodejs.org/dist/v10.16.3/node-v10.16.3.tar.gz
RUN tar -xvzf node-v10.16.3.tar.gz
WORKDIR /root/node-v10.16.3/
RUN ./configure
RUN make -j4
RUN make install
RUN ln -s /usr/local/bin/node /usr/bin/node
RUN rm -rf /root/node-v10.16.3*
#-- Download and install spcific verion for yarn (1.17.3)
WORKDIR /opt
RUN wget https://github.com/yarnpkg/yarn/releases/download/v1.17.3/yarn-v1.17.3.tar.gz
RUN tar -xvzf yarn-v1.17.3.tar.gz
RUN echo export PATH="$PATH:/opt/yarn-v1.17.3/bin" > /root/.bashrc
RUN source /root/.bashrc
#-- install libsass
WORKDIR /opt
RUN git clone https://github.com/sass/sassc && cd sassc && \
git clone https://github.com/sass/libsass && \
SASS_LIBSASS_PATH=/opt/sassc/libsass make && \
mv bin/sassc /usr/bin/sassc && \
cd ../ && rm -rf /sassc
# created node-sass binary
ENV SASS_BINARY_PATH=/usr/lib/node_modules/node-sass/build/Release/binding.node
RUN git clone --recursive https://github.com/sass/node-sass.git && \
cd node-sass && \
git submodule update --init --recursive && \
npm install && \
node scripts/build -f && \
cd ../ && rm -rf node-sass
# add binary path of node-sass to .npmrc
RUN touch $HOME/.npmrc && echo "sass_binary_cache=${SASS_BINARY_PATH}" >> $HOME/.npmrc
ENV SKIP_SASS_BINARY_DOWNLOAD_FOR_CI true
ENV SKIP_NODE_SASS_TESTS true
RUN apk add aws-cli jq bash
#--
ARG ENV=prod
EXPOSE 80
RUN mkdir -p /opt/something
RUN whoami
WORKDIR /opt/something
COPY . /opt/something/
RUN chmod +x /opt/something/start_container.sh
RUN cat /root/.bashrc
RUN cp .env .env.production
RUN source /root/.bashrc && \
yarn && \
yarn build && \
yarn global add serve
ENTRYPOINT [ "/opt/something/start_container.sh" ]
当它在 Mac 上失败时,我得到
Step 17/18 : RUN source /root/.bashrc && yarn && yarn build && yarn global add serve
---> Running in ddb97ab31a65
yarn install v1.17.3
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@2.1.2: The platform "linux" is incompatible with this module.
info "fsevents@2.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.11: The platform "linux" is incompatible with this module.
info "fsevents@1.2.11" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "@amcharts/amcharts4 > canvg@2.0.0" has unmet peer dependency "canvas@^2.1.0".
warning "@amcharts/amcharts4 > canvg@2.0.0" has unmet peer dependency "jsdom@^13.0.0".
warning "@amcharts/amcharts4 > canvg@2.0.0" has unmet peer dependency "xmldom@^0.1.27".
warning "react-final-form > ts-essentials@5.0.0" has incorrect peer dependency "typescript@>=3.7.0".
warning "react-scripts > eslint-config-react-app@5.2.0" has incorrect peer dependency "eslint-plugin-flowtype@3.x".
[4/4] Building fresh packages...
Done in 63.56s.
yarn run v1.17.3
$ react-scripts build
Creating an optimized production build...
Browserslist: caniuse-lite is outdated. Please run the following command: `yarn upgrade`
Failed to compile.
Failed to minify the bundle. Error: static/js/3.9a1e52a6.chunk.js from Terser
Error: Call retries were exceeded
at compiler.run (/opt/something/node_modules/react-scripts/scripts/build.js:196:23)
at finalCallback (/opt/something/node_modules/webpack/lib/Compiler.js:257:39)
at hooks.done.callAsync.err (/opt/something/node_modules/webpack/lib/Compiler.js:273:13)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/opt/something/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:6:1)
at AsyncSeriesHook.lazyCompileHook (/opt/something/node_modules/tapable/lib/Hook.js:154:20)
at onCompiled (/opt/something/node_modules/webpack/lib/Compiler.js:271:21)
at hooks.afterCompile.callAsync.err (/opt/something/node_modules/webpack/lib/Compiler.js:681:15)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/opt/something/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:6:1)
at AsyncSeriesHook.lazyCompileHook (/opt/something/node_modules/tapable/lib/Hook.js:154:20)
at compilation.seal.err (/opt/something/node_modules/webpack/lib/Compiler.js:678:31)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/opt/something/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:6:1)
at AsyncSeriesHook.lazyCompileHook (/opt/something/node_modules/tapable/lib/Hook.js:154:20)
at hooks.optimizeAssets.callAsync.err (/opt/something/node_modules/webpack/lib/Compilation.js:1423:35)
at AsyncSeriesHook.eval [as callAsync] (eval at create (/opt/something/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:6:1)
at AsyncSeriesHook.lazyCompileHook (/opt/something/node_modules/tapable/lib/Hook.js:154:20)
at hooks.optimizeChunkAssets.callAsync.err (/opt/something/node_modules/webpack/lib/Compilation.js:1414:32)
(它试图从中获取的存储库没有连接问题)
我真的被这个踩到了。我只是在 linux 上构建,这很好,但我无法在我的本地 mac 上构建开发...
任何指针将不胜感激!
编辑:我在 linux 和 Mac 上使用完全相同的基本映像,但它只在 Mac 上失败......这真的很奇怪。
大卫
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。