gpt4 book ai didi

node.js - 如何在 docker-compose.yaml 中填充卷

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:21 24 4
gpt4 key购买 nike

我开始编写我的第一个 docker-compose.yml 文件来设置组成我的应用程序的服务组合(所有 Node-js)。其中一项服务(网络服务器 - 定制,非快速)既有大量所需的模块,也有更多的 Bower_components。

为了提供关注点分离,以便我可以更紧密地控制版本控制,我想创建两个保存 node_modules 和 Bower_components 的命名卷,并将这些卷安装到 Web 服务器服务的相关目录中。

令我困惑的问题是如何在服务启动时填充这两个卷。我感到困惑的原因有两个:-

  1. docker-compose 的行为与 -d标志与 docker run命令 -d标志 - Web 服务显然需要保持运行(如果失败,确实需要重新启动),而可能填充一个或其他卷的容器则在整个应用程序使用 docker-compose up 启动时运行一次。命令。我可以控制这个吗?
  2. 正在运行的服务和 build该服务的命令。我真的可以使用 Dockerfiles运行npm installbower install 。特别是,如果我更改了 Web 应用程序的源代码,但模块和 Bower_components 没有更改,那么由于缓存的结果,此构建步骤是否会立即完成?

我一直无法找到这种行为的例子,所以我很困惑如何去做。有人可以帮忙吗?

最佳答案

我在没有 Bower 的情况下做了类似的事情,但使用了 NodeJS 工具,如 Sass、Hall、live reload、jasmine...我使用 npm 进行 npm 项目内的所有安装(不是全局安装)为此,官方 Node 镜像非常安静,我只需将 PATH 设置为 app/node_modules/.bin 即可。所以我的 Dockerfile 看起来像这样(非常简单):

FROM node:7.5
ENV PATH /usr/src/app/node_modules/.bin/:$PATH

我的 docker-compose.yml 文件是:

version: '2'
services:
mydata:
image: busybox
stdin_open: true
volumes:
- .:/usr/src/app
node:
build: .
image: mynodecanvassvg
working_dir: /usr/src/app
stdin_open: true
volumes_from:
- mydata
sass:
depends_on:
- node
image: mynodecanvassvg
working_dir: /usr/src/app
volumes_from:
- mydata
#entrypoint: "node-sass -w -r -o public/css src/scss"
stdin_open: true
jasmine:
depends_on:
- node
image: mynodecanvassvg
working_dir: /usr/src/app
volumes_from:
- mydata
#entrypoint: "jasmine-node --coffee --autoTest tests/coffee"
stdin_open: true
live:
depends_on:
- node
image: mynodecanvassvg
working_dir: /usr/src/app
volumes_from:
- mydata
ports:
- 35729:35729
stdin_open: true

我在入口点方面遇到了一些麻烦,所有入口点都需要终端在工作时显示结果。因此,我使用 stdin_open: true 来保持容器处于事件状态,然后在每个容器上使用 docker exec -it 来运行每个监视服务。

当然,我使用 -d 启动 docker-compose 以使其作为守护进程保持事件状态。接下来,您必须将 npm package.json 放在应用程序文件夹中(位于 Dockerfile 和 docker-compose.yml 旁边),并启动 npm 更新来加载和安装模块。

关于node.js - 如何在 docker-compose.yaml 中填充卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42360483/

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