Docker 映像无法在 AWS EC2 linux 上构建,但在 Windows 和 Mac 上构建时有效 package.jsonDockerfiledocker-compose.yml错误

问题描述

当我在 Mac 或 Windows 上使用以下 3 个文件运行 docker-compose build minexample 时,映像构建成功。但是当我尝试在 AWS Linux 2 EC2 实例上做同样的事情时,它在运行 node-sass 的安装脚本时失败(见下文)。

经过 2 天多次反复试验后,我意识到如果我将 react-scripts 版本降低到“3.0.0”,问题就会消失。这也意味着我需要将开发依赖项中的 eslint(我不包括在最小示例中)从 7.12.0 降低到 5.16.0。

我有几个问题:

  1. docker 构建如何在 Mac/Windows 上成功,而在 Linux 上却失败?我认为容器应该是一个孤立的环境,但主机操作系统以某种方式影响了这里的结果。
  2. 如何确定哪些节点包版本存在冲突?通过反复试验,我们花了很多时间才发现降低 react-script 的版本可以解决(或隐藏)问题。

package.json

{
  "name": "minexample","version": "1.0.0","dependencies": {
    "node-sass": "4.12.0","react": "16.14.0","react-dom": "16.14.0","react-router": "5.0.0","react-router-dom": "5.0.0","react-scripts": "4.0.2"
  },"devDependencies": {
  },"scripts": {
    "start": "react-scripts start"
  }
}

Dockerfile

FROM node:10.16.0-alpine AS build

RUN mkdir -p /usr/src/app
workdir /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# cache dependencies
copY ./package.json /usr/src/app/package.json
RUN npm install

docker-compose.yml

version: '3.7'

services:
  minexample:
    build:
      context: ./
      dockerfile: Dockerfile
    container_name: minexample

错误

> node-sass@4.12.0 install /usr/src/app/node_modules/node-sass 
> node scripts/install.js

The command '/bin/sh -c npm install' returned a non-zero code: 1
ERROR: Service 'minexample' Failed to build

解决方法

基于评论。

我试图重现该问题,但在我的测试中,docker 映像成功构建

已使用实例,t2.small(尚未使用 t2.micro 进行测试)。

亚马逊 Linux 2:

NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Docker

docker --version
Docker version 19.03.13-ce,build 4484c46

docker-compose

docker-compose --version
docker-compose version 1.28.4,build cabd5cfb

构建映像

docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
a_minexample        latest              82968af21096        24 minutes ago      426MB
node                10.16.0-alpine      9dfa73010b19        20 months ago       75.3MB