【发布时间】:2021-08-09 09:42:49
【问题描述】:
我正在关注 docker 和 docker compose 的教程。虽然Dockerfile中有npm install命令(如下),但有一种情况需要导师手动运行。
COPY package*.json .
RUN npm install
因为他将项目当前目录通过卷映射到容器如下:(这就像项目通过将源代码映射到主机目录在容器中运行)
api:
build: ./backend
ports:
- 3001:3000
environment:
DB_URL: mongodb://db/vidly
volumes:
- ./backend:/app
所以 docker 文件中的 npm install 命令没有任何意义。所以他直接在项目的根目录下运行这个命令。
所以,另一个开发人员也必须运行npm install,(或者如果我添加一个新包,我也应该这样做)这似乎对开发人员不太友好。因为docker的目的不是自己做指令。所以docker-compose up 应该做所有事情。任何有关此问题的想法将不胜感激。
【问题讨论】:
-
"...有一种情况,导师必须手动运行该命令。" - 究竟是什么情况?我想象容器是一个开发容器,否则我们不会挂载,而是将代码复制到容器中。
-
是的,我说的是开发时间。关于这种情况,我后面描述过:因为他在映射项目...
-
那是……含糊不清。我希望代码以
npm start或类似名称开头,并在检测到更改时自动重新加载(通过npm,这就是我们首先希望卷安装的原因)。我认为我们没有理由必须重建。但话又说回来,我不是 javascript 生态系统的专家,我在这方面的知识非常有限。 -
如果没有 docker,你将如何处理这个开发?这是针对测试/生产问题的开发与构建。如果您在 docker 容器中为您的开发安装本地文件夹,并在开发时添加/更改依赖项,您必须启动一些命令来刷新您的开发树。如果没有 docker,您可以在自己的本地环境或本地/远程(虚拟)机器中执行此操作。使用 docker 和绑定挂载,您可以在运行的容器中执行此操作(并且大多数 IDE 都支持 docker,并且如果您有人不习惯命令行,则可以从他们的 GUI 中执行此操作)。
-
@Zeitounator 这是有道理的。谢谢
标签: docker npm docker-compose dockerfile