gpt4 book ai didi

node.js - docker compose vs docker run - Node 容器

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:38 25 4
gpt4 key购买 nike

我正在尝试为 React 应用程序设置容器。我的目标是使用 docker-compose(我想执行一个命令并让一切正常工作)

问题是,当我尝试使用 docker-compose 和 docker 文件(如下所示)时,我得到的信息是:

docker-compose.yml

version: '2'
services:
react:
build: ./images/react
ports:
- "3000:3000"
volumes:
- "/home/my/path:/app"

Dockerfile

FROM node:6.9

WORKDIR /app

RUN npm install

EXPOSE 3000

CMD [ "npm", "start" ]

结果

npm WARN enoent ENOENT: no such file or directory, open '/app/package.json'

但是当我使用 docker run 和卷映射执行此操作时,我能够看到 packages.json 并运行 npm install 命令。

docker run -it --rm -v /home/my/path:/app node:6.9 bash

为什么它不能与 docker compose 一起工作?

最佳答案

请注意,您在 docker-compose.yml 文件中描述的卷将在运行时而非构建时装载em>。这意味着在构建图像时,那里(还)不会有任何 package.json 文件,您可以从中安装依赖项。

当使用 -v/home/my/path:/app运行容器镜像时,您实际上是先挂载目录,然后是 npm install 调用将成功完成。

如果您打算将您的应用程序(包括 package.json)安装到您的容器中,npm install 需要在运行时发生(CMD),而不是在构建时 (RUN)。

完成此操作的最简单方法是简单地将 npm install 语句添加到您的 CMD 指令(并删除 RUN npm install说明):

CMD npm install && npm start

关于node.js - docker compose vs docker run - Node 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40226216/

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