Node.js 反应|节点应用| Docker部署

Node.js 反应|节点应用| Docker部署,node.js,reactjs,docker,couchbase,Node.js,Reactjs,Docker,Couchbase,我是一个新手,已经创建了react前端和节点后端应用程序,并试图在docker中部署,但它抛出了以下错误。有人能告诉我为什么会引用python,为什么couchbase的安装会出现问题吗 Package.json文件已被删除 { "name": "XPress", "version": "0.1.0", "private": true, "dependencies": { "antd": "^3.10.8", "axios": "^0.18.1", "bo

我是一个新手,已经创建了react前端和节点后端应用程序,并试图在docker中部署,但它抛出了以下错误。有人能告诉我为什么会引用python,为什么couchbase的安装会出现问题吗

Package.json文件已被删除

{
  "name": "XPress",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "antd": "^3.10.8",
    "axios": "^0.18.1",
    "body-parser": "^1.19.0",
    "cors": "2.8.5",
    "couchbase": "^2.6.11",
    "dva": "^2.4.1",
    "dva-loading": "^2.0.6",
    "express": "^4.17.1",
    "pg": "^7.18.2",
    "react": "^16.6.3",
    "react-dom": "^16.6.3",
    "react-scripts": "2.1.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app",
    "parser": "babel-eslint",
    "parserOptions": {
      "sourceType": "module",
      "allowImportExportEverywhere": true
    }
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}
{
“名称”:“XPress”,
“版本”:“0.1.0”,
“私人”:没错,
“依赖项”:{
“antd”:“^3.10.8”,
“axios”:“^0.18.1”,
“正文分析器”:“^1.19.0”,
“cors”:“2.8.5”,
“couchbase”:“^2.6.11”,
“dva”:“^2.4.1”,
“dva加载”:“^2.0.6”,
“快车”:“^4.17.1”,
“pg”:“^7.18.2”,
“反应”:“^16.6.3”,
“react dom”:“^16.6.3”,
“反应脚本”:“2.1.1”
},
“脚本”:{
“开始”:“反应脚本开始”,
“构建”:“反应脚本构建”,
“测试”:“反应脚本测试”,
“弹出”:“反应脚本弹出”
},
“eslintConfig”:{
“扩展”:“反应应用程序”,
“解析器”:“babel eslint”,
“解析选项”:{
“源类型”:“模块”,
“AllowPortExporterywhere”:true
}
},
“浏览者”:[
">0.2%",
“没有死”,
显然不是ie,couchbase取决于要安装的节点gyp。您必须在Docker容器中安装Python

考虑到您使用的是
alpine:node
,您可以通过
apk
安装它:

RUN apk add --update-cache \
    python \
    python-dev \
    py-pip \
    build-base
在运行
npm install
之前添加此命令

此样本取自此处:

更新


很抱歉,我的响应不完整。您需要安装一些其他依赖项,并在运行npm安装后删除它们。请查看此问题:

请注意,npm安装是在
apk add
apk del
之间运行的,因此构建依赖项(如python)不会捆绑在映像中

RUN apk add --no-cache --virtual .build-deps make gcc g++ python \
 && npm install --production --silent \
 && apk del .build-deps
显然,couchbase依赖于要安装的节点gyp。您必须在Docker容器中安装Python

考虑到您使用的是
alpine:node
,您可以通过
apk
安装它:

RUN apk add --update-cache \
    python \
    python-dev \
    py-pip \
    build-base
在运行
npm install
之前添加此命令

此样本取自此处:

更新


很抱歉,我的响应不完整。您需要安装一些其他依赖项,并在运行npm安装后删除它们。请查看此问题:

请注意,npm安装是在
apk add
apk del
之间运行的,因此构建依赖项(如python)不会捆绑在映像中

RUN apk add --no-cache --virtual .build-deps make gcc g++ python \
 && npm install --production --silent \
 && apk del .build-deps

感谢您的回复。我尝试了上述建议,无法添加整个错误,因此我在原始帖子中添加了。我仍然看到一些错误。很抱歉,我的回复不完整。您需要安装一些其他依赖项,并在运行npm安装后删除它们。请查看此问题:再次感谢,已生成映像,TestUser$docker run ximghjgdsk/xpress/node_modules/bindings/bindings.js:121 throw e;^错误:加载共享库/xpress/node_modules/couchbase/build/Release/couchbase_impl.node:Exec格式错误,我的最新docker文件如下:来自节点:alpine#创建应用程序目录WORKDIR/xpress#安装应用程序依赖项#通配符d用于确保package.json和package-lock.json都被复制(如果可用)(npm@5+)运行apk add--no cache--virtual.build deps make gcc g++python\&npm install--production--silent\&apk del.build deps COPY package*.json./#如果您正在为生产构建代码#运行npm ci--only=production#Bundle app source COPY..CMD[“npm”,“start”]CMD[“node”,“server.js”]您的Dockerfile的命令非常混乱。在运行
npm install
之前,您需要复制
package*.json
,否则您只是安装一个空包。
npm ci
不需要,因为它运行
npm install
。此外,您还有两条
CMD
语句。这是预期的吗?谢谢您的响应e、 我尝试了上面的建议,无法添加整个错误,因此我在原始帖子中添加了。我仍然看到一些错误。很抱歉,我的响应不完整。您需要安装一些其他依赖项,并在运行npm安装后删除它们。请查看此问题:再次感谢,映像已生成,TestUser$docker运行ximghjgdsk/x按/node_modules/bindings/bindings.js:121抛出e;^Error:Error加载共享库/xpress/node_modules/couchbase/build/Release/couchbase_impl.node:Exec format Error,我的最新docker文件如下从node:alpine#创建应用程序目录WORKDIR/xpress#安装应用程序依赖项#使用通配符确保两者package.json和package-lock.json在可用的地方复制(npm@5+)运行apk add--no cache--virtual.build deps make gcc g++python\&npm install--production--silent\&apk del.build deps COPY package*.json./#如果您正在为生产构建代码#运行npm ci--only=production#Bundle app source COPY..CMD“,“start”]CMD[“node”,“server.js”]Dockerfile的命令非常混乱。在运行
npm install
之前,您需要复制
package*.json
,否则您只是安装一个空包。
npm ci
不需要,因为它运行
npm install
。此外,您还有两条
CMD
语句。这是预期的吗?