开发需要的条件图配置

Luc*_*cio 4 development-environment node.js node-inspector docker fig

我们现在使用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
Run Code Online (Sandbox Code Playgroud)

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

indexer:
  ports:
    - "8080:8080"
  build: .
  volumes:
   - .:/src
  links:
   - db
   - amqp
   - search
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢你的任何建议.

欢呼卢西奥

Tho*_*eil 7

你可以在调用时传入环境变量fig upfig run

采取以下图配置文件:

test:
  image: base
  command: env
  environment:
    - DEBUG
Run Code Online (Sandbox Code Playgroud)

它定义了一个名为的容器test,用于打印出环境变量.请注意,在本environment节中,我们定义了一个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
Run Code Online (Sandbox Code Playgroud)

但您可以为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
Run Code Online (Sandbox Code Playgroud)

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