gpt4 book ai didi

docker - 使用 compose 运行 docker 容器时,npm 找不到 package.json

转载 作者:行者123 更新时间:2023-12-02 03:23:19 26 4
gpt4 key购买 nike

我正在尝试将我的 Angular 7 客户端应用程序连接到本地 docker compose。

当我进行 docker-compose up 时,出现以下错误:

client-app    | npm ERR! errno -2
client-app | npm ERR! syscall open
client-app | npm ERR! enoent ENOENT: no such file or directory, open '/app/package.json'

Dockerfile:

FROM node:9.6.1

RUN mkdir -p /app
WORKDIR /app
EXPOSE 4200

ENV PATH /app/node_modules/.bin:$PATH

COPY . /app

RUN npm install --silent
RUN npm rebuild node-sass

CMD ["npm", "run", "docker-start"]

客户端的撰写部分是:

  client-app:
image: ${DOCKER_REGISTRY-}client
container_name: client-app
ports:
- "4200:81"
build:
context: .
dockerfile: ClientApp/Dockerfile

package.json 与 Dockerfile 一起位于 ClientApp 文件夹中,我假设 COPY 。/app 应该将 package.json 复制到容器中。我在 dockerignore 中没有任何排除。我正在将 Docker for Windows 与 Unix 容器一起使用。我之前尝试过 npm init (但这会创建一个空的 package.json )并查看了 SO 帖子,但大多数 dockerfile 定义看起来完全相同。我还尝试过:另外复制 package*.json ./并使用 --no-cache 构建图像。

最佳答案

你的Dockerfile很好,并且COPY package*.json ./不是必需的 - 它会与您的整个应用程序一起复制。

问题出在您的docker-compose文件中。

您定义:

build:
context: .
dockerfile: ClientApp/Dockerfile

这意味着,您的 Dockerfile 将接受 docker-compose 上下文,即上面的 1 个目录:

├── docker-compose.yml -- this is the actual context
└── ClientApp
├── Dockerfile -- this is the expected context

所以当CMD运行时,它是package.json之上的1个目录,因此无法运行命令并且容器退出。

要修复它,请为您的 docker-compose 文件提供正确的上下文:

build:
context: ClientApp
dockerfile: Dockerfile

它应该可以工作。

关于docker - 使用 compose 运行 docker 容器时,npm 找不到 package.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55589014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com