本地 npm 依赖项在 docker build 中“不包含 package.json 文件”,但使用 npm start 运行良好

2024-01-02

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

目录结构基本上如下:

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

My 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 依赖项?

另外,添加如下内容COPY the /shared进入图像生成一个COPY failed: Forbidden path outside the build context: ../shared/contexts () error:

COPY ../shared ./

好的,这有效。我改变了我的Dockerfile.dev至以下内容:

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

从基础项目目录(其中/shared and /web居住),我运行:

docker build -t sockpuppet/client -f ./web/Dockerfile.dev .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

本地 npm 依赖项在 docker build 中“不包含 package.json 文件”,但使用 npm start 运行良好 的相关文章

随机推荐