当前位置: 首页 > 知识库问答 >
问题:

node.js - nodejs项目使用docker部署为何失败?

凌炜
2024-01-31

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.jsnode: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.<anonymous> (/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 ECONNREFUSED1542.3 npm ERR! syscall connect1542.3 npm ERR! errno ECONNREFUSED1542.3 npm ERR! FetchError: request to https://registry.npmjs.org/ava failed, reason: connect ECONNREFUSED 104.16.28.34:4431542.3 npm ERR!     at ClientRequest.<anonymous> (/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:4431542.3 npm ERR!     at ClientRequest.<anonymous> (/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 the1542.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: 1ERROR: Service 'node' failed to build : Build failed

麻烦大佬指点为何,个人理解是thinkjs没有被正确的install,如果我想只写docker-compose文件不写dockerfile文件应该如何操作

共有2个答案

颛孙铭
2024-01-31

npm install 失败提示的是网络异常,可以换成淘宝源试试npm config set registry http://registry.npmmirror.com dockerfile 改写成这样。

# 使用官方 Node.js 镜像FROM node:18.17.1# 设置工作目录WORKDIR /data/jxxw/node# 将当前目录下的所有内容都复制到位于 /app 的容器中COPY . /data/jxxw/node# 安装项目依赖RUN npm config set registry http://registry.npmmirror.com &&  npm install# 暴露端口,供外部访问EXPOSE 8362CMD ["npm",  "start"]
阚吕恭
2024-01-31

thinkjs 不会是给按到了全局了吧,你看看项目下有thinkjs吗

 类似资料:
  • 我有一个全栈node.js项目,我不知道部署它的最佳实践是什么。 首先提供一些信息:应用程序包括: 下一个。js前端 redis缓存 postgres sql 和节点。js后端 部署不应该花费太多,因为这是一个爱好项目。 目前(作为开发环境),我使用vercel作为前端,我自己的vm作为后端 然而,我想在应用引擎中部署一切(即没有太多的配置和自动扩展) 我只是不知道最好的提供商是什么,因为有很多服

  • 经过前文对Docker Compose的讲解,我们以Spring Cloud章节的几个示例项目为例,讲解如何使用Docker Compose部署项目: 准备工作 使用到的示例项目有: 项目名称 作用 microservice-api-gateway API Gateway microservice-consumer-movie-ribbon-with-hystrix 服务消费者 microserv

  • 我想部署一个库到我公司的远程存储库。 这是我第一次想将库项目部署到远程存储库。 我收到以下错误消息: org.sonatype.aether.transfer.artifactNotFoundException:找不到工件com.http: httpkit: jar: 0.0.1internal.repo(http://jenkins.internal.com/) 也许我理解了一些完全错误的地方,

  • 本文向大家介绍Docker实践--部署Nodejs应用,包括了Docker实践--部署Nodejs应用的使用技巧和注意事项,需要的朋友参考一下 这个例子的目标是为了向大家展示如何在Docker的container里运行Node.js程序。我会先创建一个简单的Node.js web app,来构建一个镜像。然后基于这个Image运行一个container。从而实现快速部署。 由于网络的原因我的Nod

  • 问题内容: 当我尝试在heroku中进行部署时遇到问题。有趣的是,这是三天前的工作。另外,在本地计算机上工作正常。 Bcrypt的版本是3.0.0,节点8.12.0 我确实需要部署此服务器。您能告诉我如何解决此错误吗?我尝试了一些找到的解决方案,但没有任何效果。我什至尝试卸载并再次安装Bcrypt,但无法正常工作。 谢谢您的帮助。 这是日志。 问题答案: 我也发生了同样的事情。 未在package

  • 本文向大家介绍Docker部署web项目的实现,包括了Docker部署web项目的实现的使用技巧和注意事项,需要的朋友参考一下 上一篇已经安装好docker服务,下面继续介绍如何部署web项目 一:随便创建目录dock,准备好如下文件: 二、编写Dockerfile,通过它能快速地构建docker镜像 新增如下配置 解释: (1)FROM centos 表示从docker官方仓库中获取centos