推荐 最新
全能人才

nodejs项目使用docker部署为何失败?

nodejs使用thinkjs开发的项目docker-compose部署失败 我在用docker-compose部署一个node.js项目时遇见的无法部署,该项目之前使用pm2直接部署在宿主机是可以正常运行的,项目使用了thinkjs框架,下面的是我的docker-compose文件: services: node: image: node:18.17.1 volumes: - /data/jxxw/node/h5-api/:/data/jxxw/node working_dir: /data/jxxw/node command: npm start ports: - "8362:8362" h5-api是我把node项目解压之后的文件夹,执行docker-compose up -d之后发现容器未启动,查看logs获得如下提示: > jxxw-api@1.0.0 start > node production.js node:internal/modules/cjs/loader:1080 throw err; ^ Error: Cannot find module 'thinkjs' Require stack: - /data/jxxw/node/production.js at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15) at Module._load (node:internal/modules/cjs/loader:922:27) at Module.require (node:internal/modules/cjs/loader:1143:19) at require (node:internal/modules/cjs/helpers:121:18) at Object. (/data/jxxw/node/production.js:2:21) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) { code: 'MODULE_NOT_FOUND', requireStack: [ '/data/jxxw/node/production.js' ] } Node.js v18.17.1 看提示是未读取到thinkjs的依赖,据node开发同学反馈他的打包流程如下: 1.npm install 2.npm pack 之后就把生成的tgz文件给到我这边, 我尝试过写dockerfile文件解决,如下: # 使用官方 Node.js 镜像 FROM node:18.17.1 # 设置工作目录 WORKDIR /data/jxxw/node # 将当前目录下的所有内容都复制到位于 /app 的容器中 COPY . /data/jxxw/node # 安装项目依赖 RUN npm install # 暴露端口,供外部访问 EXPOSE 8362 提示install失败: => ERROR [4/4] RUN npm install 1542.3s ------ > [4/4] RUN npm install: 1542.3 npm ERR! code ECONNREFUSED 1542.3 npm ERR! syscall connect 1542.3 npm ERR! errno ECONNREFUSED 1542.3 npm ERR! FetchError: request to https://registry.npmjs.org/ava failed, reason: connect ECONNREFUSED 104.16.28.34:443 1542.3 npm ERR! at ClientRequest. (/usr/local/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:130:14) 1542.3 npm ERR! at ClientRequest.emit (node:events:514:28) 1542.3 npm ERR! at TLSSocket.socketErrorListener (node:_http_client:501:9) 1542.3 npm ERR! at TLSSocket.emit (node:events:526:35) 1542.3 npm ERR! at emitErrorNT (node:internal/streams/destroy:151:8) 1542.3 npm ERR! at emitErrorCloseNT (node:internal/streams/destroy:116:3) 1542.3 npm ERR! at process.processTicksAndRejections (node:internal/process/task_queues:82:21) 1542.3 npm ERR! FetchError: request to https://registry.npmjs.org/ava failed, reason: connect ECONNREFUSED 104.16.28.34:443 1542.3 npm ERR! at ClientRequest. (/usr/local/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:130:14) 1542.3 npm ERR! at ClientRequest.emit (node:events:514:28) 1542.3 npm ERR! at TLSSocket.socketErrorListener (node:_http_client:501:9) 1542.3 npm ERR! at TLSSocket.emit (node:events:526:35) 1542.3 npm ERR! at emitErrorNT (node:internal/streams/destroy:151:8) 1542.3 npm ERR! at emitErrorCloseNT (node:internal/streams/destroy:116:3) 1542.3 npm ERR! at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { 1542.3 npm ERR! code: 'ECONNREFUSED', 1542.3 npm ERR! errno: 'ECONNREFUSED', 1542.3 npm ERR! syscall: 'connect', 1542.3 npm ERR! address: '104.16.28.34', 1542.3 npm ERR! port: 443, 1542.3 npm ERR! type: 'system', 1542.3 npm ERR! requiredBy: '.' 1542.3 npm ERR! } 1542.3 npm ERR! 1542.3 npm ERR! If you are behind a proxy, please make sure that the 1542.3 npm ERR! 'proxy' config is set properly. See: 'npm help config' 1542.3 1542.3 npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2024-01-30T14_55_34_130Z-debug-0.log ------ Dockerfile:8 -------------------- 6 | COPY . /data/jxxw/node 7 | # 安装项目依赖 8 | >>> RUN npm install 9 | # 暴露 8000 端口,供外部访问 10 | EXPOSE 8362 -------------------- ERROR: failed to solve: process "/bin/sh -c npm install" did not complete successfully: exit code: 1 ERROR: Service 'node' failed to build : Build failed 文件夹里面的内容: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241012/51442a17882aca0ab26a493929096900.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241012/f8f4ac3f0bf1276f5a936c80d592112c.png) 麻烦大佬指点为何,个人理解是thinkjs没有被正确的install,如果我想只写docker-compose文件不写dockerfile文件应该如何操作

0
1
0
浏览量223