有条件的无花果configuration为开发需要

一段时间以来,我们一直在使用docker集装箱进行开发和卸载,而且它的function就像一个魅力。 直到现在,两个configuration都是相同的,而顶层的开发人员的生活也更容易。

随着我们在节点开发中越来越多地使用它,现在我们面临着在开发(检查员,configuration文件等)的时候需要一些额外的工具,而这些工具在生产容器中显然是不需要的。 再次捕捉到node-inspector是:它需要暴露一个端口连接到一个浏览器才能看到该工具它自己。

这里是简单的我们的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 

“索引器”是我们的应用程序容器,可以多次启动,将其configuration更改为:

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

埋藏一个小问题:当我们启动其中的许多映射端口显然成为一个问题,没有检查员实际上是可用的。

我的第一个getto解决scheme只是为了debugging目的而创build一个新的“indexer-dev”容器来启动,但是当我们在shell上运行一个方便的fig up只是为了把所有东西都打开,然后另一个fig run indexer dev bash为了我们的debugging目的,在另外一个fig run indexer dev bash中。 所以我现在正在做的只是一个fig up然后手动启动与neede转发端口的容器:docker运行-i -t -p 8080:8080分度器:最新

以更自动化的方式做到这一点最好的办法是什么? 比如开发者可以通过图来保证启动容器,select哪个实例可能或者可能没有输出端口?

谢谢你的任何build议。

欢呼卢西奥

你可以通过环境variables传递给fig up或者fig run

采取以下无花果configuration文件:

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

它定义了一个名为test的容器,将打印出环境variables。 请注意,在environment部分我们定义了一个没有值的环境variablesDEBUG

当运行fig upfig run ,将会有DEBUG环境variables定义没有值

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

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

 $ 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 

这可以让你传递秘密或让你的容器行为有所不同,取决于一些环境variables。