从一段时间以来,我们一直在使用docker容器进行开发和耗尽,它的效果很不错。到目前为止,两个配置都是相同的,有了fig,开发人员的生活也变得更容易了。
随着我们在我们的节点开发周期中越来越多地使用它,我们现在面临着在开发时需要一些额外的工具(检查器、配置文件等),这些东西显然不是生产容器中需要的。节点检查器的另一个问题是:它需要公开一个与浏览器连接的端口,以便查看工具本身。
下面是我们的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“是我们的应用程序容器,它可以多次加载,将其配置更改为:
indexer:
ports:
- "8080:8080"
build: .
volumes:
- .:/src
links:
- db
- amqp
- searchburries有一个小问题:当我们启动它们中的许多时,映射的端口显然成了一个问题,实际上没有可用的检查器。
我的第一个getto解决方案只是创建了一个新的"indexer-dev“容器来启动,只是为了调试目的,但是它做不到,因为我们在一个fig up上运行一个方便的fig run indexer dev bash只是为了打开所有东西,然后在另一个shell中运行另一个shell来进行调试。所以我现在要做的就是运行一个fig up,然后用需要转发的端口手动启动容器: docker run -i -t -p 8080:8080 indexer:latest
以一种更自动化的方式实现这一点,最好的方法是什么?例如,开发人员可以方便地在整个图中不断启动容器,并选择哪个实例可能具有或可能没有导出端口?
谢谢你的建议。
干杯卢西奥
发布于 2014-10-06 02:35:33
您可以在调用fig up或fig run时传入环境变量
获取以下fig配置文件:
test:
image: base
command: env
environment:
- DEBUG它定义了一个名为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但是您可以为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这允许您传递秘密,或者让您的容器根据某些环境变量的不同而表现不同。
https://stackoverflow.com/questions/25739589
复制相似问题