node.js - Docker Compose Up 构建 Node-Sass 错误

标签 node.js docker npm docker-compose

我一直在尝试使用 docker-compose up --build 构建我的 docker 容器命令,但每次,我都会收到一大堆错误。我看到很多node-sassnode-gyp ,我已经用谷歌搜索了错误的每个组合,但找不到解决方案。
系统

  • MacOS 11.2.3 (MacBook Pro M1)
  • Node 15.0.0
  • Docker 3.3.1

  • 命令运行
  • docker-compose up --build

  • Dockerfile
    FROM node
    
    # Set up client
    WORKDIR /usr/src/app/client
    COPY ./client/package*.json ./
    RUN npm install
    
    COPY ./client/src ./src
    COPY ./client/tsconfig.json ./tsconfig.json
    COPY ./client/babel.config.js ./babel.config.js
    COPY ./client/.eslintrc.json ./.eslintrc.json
    
    RUN npm run build
    
    # Set up server
    WORKDIR /usr/src/app/server
    COPY ./server/package*.json ./
    RUN npm install
    
    COPY ./server/src ./src
    COPY ./server/database ./database
    COPY ./server/tests ./tests
    COPY ./server/tsconfig.json ./tsconfig.json
    COPY ./server/knexfile.ts ./knexfile.ts
    
    EXPOSE 3000
    CMD ["npm","run","dev"]
    
    docker-compose.yml
    version: "3.9"
    services:
      app:
        build: .
        ports:
          - "3000:3000"
          - "9229:9229"
        environment:
          NODE_ENV: development
          SESSION_SECRET: a_secret
          REDIS_SECRET: a_secret
          JWT_SECRET: a_secret
          DB_USER: a_user
          DB_PASSWORD: a_password
          DB_NAME: a_database
          DB_HOST: db
          DB_CLIENT: pg
        env_file:
          - ./server/.env
          - ./client/.env
        volumes:
          - ./client/dist:/usr/src/app/client/dist
          - ./server/src:/usr/src/app/server/src
          - ./server/database:/usr/src/app/server/database
          - ./server/tests:/usr/src/app/server/tests
      db:
        image: "postgres"
        restart: always
        environment:
          POSTGRES_USER: a_user
          POSTGRES_PASSWORD: a_password
          POSTGRES_DB: a_redis
        ports:
          - "5432:5432"
      redis:
        image: "redis:alpine"
        command: redis-server --requirepass some_pass
        volumes:
          - ./server/redis.conf:/usr/local/etc/redis/redis.conf
        environment:
          REDIS_REPLICATION_MODE: master
    
    错误的部分输出(我会全部发布,但它很长)
    % docker-compose up --build      
    Docker Compose is now in the Docker CLI, try `docker compose up`
    
    Building app
    [+] Building 89.5s (8/21)                                                                                                                                                                                   
     => [internal] load build definition from Dockerfile                                                                                                                                                   0.0s
     => => transferring dockerfile: 91B                                                                                                                                                                    0.0s
     => [internal] load .dockerignore                                                                                                                                                                      0.0s
     => => transferring context: 2B                                                                                                                                                                        0.0s
     => [internal] load metadata for docker.io/library/node:latest                                                                                                                                         0.0s
     => [internal] load build context                                                                                                                                                                      0.0s
     => => transferring context: 15.26kB                                                                                                                                                                   0.0s
     => [ 1/17] FROM docker.io/library/node                                                                                                                                                                0.0s
     => CACHED [ 2/17] WORKDIR /usr/src/app/client                                                                                                                                                         0.0s
     => CACHED [ 3/17] COPY ./client/package*.json ./                                                                                                                                                      0.0s
     => ERROR [ 4/17] RUN npm install                                                                                                                                                                     89.4s
    ------                                                                                                                                                                                                      
     > [ 4/17] RUN npm install:                                                                                                                                                                                 
    #8 33.75 npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.                                                                          
    #8 34.31 npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated                                                                                                               
    #8 34.41 npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated                                                                                                            
    #8 34.91 npm WARN deprecated har-validator@5.1.5: this library is no longer supported                                                                                                                       
    #8 38.60 npm WARN deprecated @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained
    #8 38.62 npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
    #8 39.38 npm WARN deprecated @hapi/address@2.1.4: Moved to 'npm install @sideway/address'
    #8 39.43 npm WARN deprecated @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
    #8 39.88 npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
    #8 39.90 npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
    #8 40.29 npm WARN deprecated eslint-loader@2.2.1: This loader has been deprecated. Please use eslint-webpack-plugin
    #8 40.65 npm WARN deprecated html-webpack-plugin@3.2.0: 3.x is no longer supported
    #8 41.26 npm WARN deprecated @hapi/joi@15.1.1: Switch to 'npm install joi'
    #8 42.21 npm WARN deprecated babel-eslint@10.1.0: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
    #8 89.28 npm notice 
    #8 89.28 npm notice New minor version of npm available! 7.10.0 -> 7.11.2
    #8 89.28 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.11.2>
    #8 89.28 npm notice Run `npm install -g npm@7.11.2` to update!
    #8 89.28 npm notice 
    #8 89.28 npm ERR! code 1
    #8 89.28 npm ERR! path /usr/src/app/client/node_modules/node-sass
    #8 89.28 npm ERR! command failed
    #8 89.28 npm ERR! command sh -c node scripts/build.js
    #8 89.28 npm ERR! Building: /usr/local/bin/node /usr/src/app/client/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
    #8 89.28 npm ERR! make: Entering directory '/usr/src/app/client/node_modules/node-sass/build'
    

    最佳答案

    我找到了解决我自己问题的方法。
    原来node-sass与 Node 版本 16.0.0+ 不兼容
    我意识到在我的 Dockerfile 中,我没有指定 Node 版本,我错误地认为它使用的是 Node 版本 15.0.0,但实际上它正在安装 Node 版本 16.0.0
    将我的 docker 文件更新为 FROM node:15.12.0 后,一切正常

    关于node.js - Docker Compose Up 构建 Node-Sass 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67394439/

    相关文章:

    Nginx 代理传递配置 docker

    javascript - 在私有(private)注册表上发布和安装 npm 包的问题

    javascript - webpack入门,导入报错

    javascript - Total.js 等待本地化事件

    javascript - 将属性从 Int 转换为 String 并在 KnockoutJS 中显示

    google-chrome - Windows 上的 Chrome 和 Firefox 与 Linux 上的 Chrome 和 Firefox (selenium)

    networking - 如何从外部主机 (mac) 连接到 docker

    node.js - 有没有办法在不从本地驱动器打开每个项目的情况下删除所有 node_module?

    node.js - 使用 Node 和 Express 显示 Markdown 编码的博客文章

    node.js - 如何在 NodeJS 中向 aws api 网关调用添加身份验证