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