本地 npm 依赖项在 docker 构建中"does not a contain a package.json file",但在 npm start 下运行良好



我有一个我正在本地处理的 npm 模块,它是客户端应用程序中的依赖项。

目录结构基本如下:

/app
/client
/src
App.js
package.json
Dockerfile.dev
/shared
/contexts
package.json
test.js
/hooks

package.json如下:

{
"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"
]
}
}

导入以下内容到client/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 依赖项?

此外,添加类似以下内容以将/sharedCOPY到映像中会生成COPY failed: Forbidden path outside the build context: ../shared/contexts ()错误:

COPY ../shared ./

好的,这有效。我将Dockerfile.dev更改为以下内容:

FROM node:alpine
WORKDIR '/app'
COPY ./shared /shared
COPY ./web /app
RUN npm install
CMD ["npm", "run", "start"]

从基本项目目录(/shared/web所在的位置(中,我运行:

docker build -t sockpuppet/client -f ./web/Dockerfile.dev .

相关内容

最新更新