Reactjs “本地npm依赖性”;不包含package.json文件;在docker构建中,但在npm启动时运行良好
我有一个npm模块,我正在本地工作,它是客户端应用程序中的一个依赖项 目录结构基本如下:Reactjs “本地npm依赖性”;不包含package.json文件;在docker构建中,但在npm启动时运行良好,reactjs,docker,npm,dependencies,dockerfile,Reactjs,Docker,Npm,Dependencies,Dockerfile,我有一个npm模块,我正在本地工作,它是客户端应用程序中的一个依赖项 目录结构基本如下: /app /client /src App.js package.json Dockerfile.dev /shared /contexts package.json test.js /hooks { "name": "web", "version": "0.1.0", "private": true, "
/app
/client
/src
App.js
package.json
Dockerfile.dev
/shared
/contexts
package.json
test.js
/hooks
{
"name": "web",
"version": "0.1.0",
"private": true,
"dependencies": {
"contexts": "file:../shared/contexts",
"react": "^16.10.2",
"react-dom": "^16.10.2",
"react-scripts": "3.2.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
FROM node:alpine
WORKDIR '/app'
COPY ./shared /shared
COPY ./web /app
RUN npm install
CMD ["npm", "run", "start"]
我的package.json
如下所示:
/app
/client
/src
App.js
package.json
Dockerfile.dev
/shared
/contexts
package.json
test.js
/hooks
{
"name": "web",
"version": "0.1.0",
"private": true,
"dependencies": {
"contexts": "file:../shared/contexts",
"react": "^16.10.2",
"react-dom": "^16.10.2",
"react-scripts": "3.2.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
FROM node:alpine
WORKDIR '/app'
COPY ./shared /shared
COPY ./web /app
RUN npm install
CMD ["npm", "run", "start"]
将以下内容导入到客户端/src/App.js
:
import { testImport } from 'contexts/test';
运行npm start
时按预期工作
我遇到的问题是跑步:
docker build -t sockpuppet/testapp -f Dockerfile.dev .
它失败了,我得到一个错误:
npm ERR! Could not install from "../shared/contexts" as it does not contain a package.json file.
这是Dockerfile.dev
FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
我应该如何处理本地npm依赖关系
此外,向映像中的/shared
添加类似以下内容会生成复制失败:生成上下文之外的禁止路径:../shared/contexts()
错误:
COPY ../shared ./
好的,这样行。我将我的
Dockerfile.dev
更改为以下内容:
/app
/client
/src
App.js
package.json
Dockerfile.dev
/shared
/contexts
package.json
test.js
/hooks
{
"name": "web",
"version": "0.1.0",
"private": true,
"dependencies": {
"contexts": "file:../shared/contexts",
"react": "^16.10.2",
"react-dom": "^16.10.2",
"react-scripts": "3.2.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
FROM node:alpine
WORKDIR '/app'
COPY ./shared /shared
COPY ./web /app
RUN npm install
CMD ["npm", "run", "start"]
从基本项目目录(其中/shared
和/web
驻留),我运行:
你在层次结构中放置Dockerfile的位置?你能显示你的Dockerfile吗?看起来像上下文问题
。/shared/contexts“
这是在Dockerfile的上下文之外,你没有在Dockerfile中复制,那么你是如何得到这个错误的?我唯一能想到的是不要让它成为本地npm依赖项,但这样做会失去好处<代码>复制../shared./会生成外部生成上下文
错误。