node.js – 开发需要的条件图配置

我们现在使用docker容器进行开发和deplyoment一段时间,它就像一个魅力.
直到现在两个配置都是相同的,并且使用顶部无花果,开发人员的生活也变得更加容易.

当我们在节点开发中越来越多地使用它时,我们现在需要在开发(检查器,配置文件等)时使用一些额外的工具,这些工具在生产容器中显然是不需要的.
再次捕获node-inspector:它需要公开一个端口以连接到浏览器,以便查看该工具的自身.

这里是brieffly我们的fig.yml文件:

indexer:
  build: .
  volumes:
   - .:/src
  links:
   - db
   - amqp
   - search
amqp:
  ports:
   - "5672:5672"
   - "15672:15672"
  image: mikaelhg/docker-rabbitmq
db:
  ports:
   - "3306:3306"
  image: tutum/mysql:5.6
search:
  ports:
   - "9002:9002"
   - "9300:9300"
  image: dockerfile/elasticsearch

“Indexer”是我们的app容器,可以多次推出,将其配置更改为:

indexer:
  ports:
    - "8080:8080"
  build: .
  volumes:
   - .:/src
  links:
   - db
   - amqp
   - search

掩盖了一个小问题:当我们发射其中许多时,映射的端口显然成为一个问题,并且没有检查员实际上是可用的.

我的第一个getto解决方案就是创建一个新的“indexer-dev”容器,仅用于调试目的,但它不足以让我们在shell上运行一个方便的图片只是为了把所有东西都搞定,然后另一个fig运行索引器dev bash在另一个用于我们的调试目的.
所以我现在正在做的只是一个图,然后手动启动带有neede转发端口的容器:
docker run -i -t -p 8080:8080 indexer:latest

以更自动的方式进行此操作的最佳方式是什么?比如开发人员可以继续通过无花果继续启动容器并选择可能或可能没有导出端口的实例?

谢谢你的任何建议.

干杯
卢西奥

最佳答案
你可以在调用fig up或fig run时传入环境变量

采取以下图配置文件:

test:
  image: base
  command: env
  environment:
    - DEBUG

它定义了一个名为test的容器,用于打印出环境变量.请注意,在环境部分中,我们定义了一个没有值的环境变量DEBUG.

当使用fig up或fig run运行时,它将定义没有值的DEBUG环境变量

$fig run test
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=5412e54ea3de
TERM=xterm
DEBUG=
HOME=/root

但您可以为DEBUG环境变量注入一个新值,如下所示:

$DEBUG=true fig run test
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=9150d89c57a2
TERM=xterm
DEBUG=true
HOME=/root

这允许您传递秘密或使容器的行为有所不同,具体取决于某些环境变量.

转载注明原文:node.js – 开发需要的条件图配置 - 代码日志