Node.js 反应|节点应用| Docker部署
我是一个新手,已经创建了react前端和节点后端应用程序,并试图在docker中部署,但它抛出了以下错误。有人能告诉我为什么会引用python,为什么couchbase的安装会出现问题吗 Package.json文件已被删除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
{
"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
语句。这是预期的吗?