我们现在使用docker容器进行开发和deplyoment一段时间,它就像一个魅力。 直到现在两个配置都是相同的,并且使用顶部的图形开发人员的生活也更容易。
随着我们在节点开发中越来越多地使用它,现在我们在开发(检查器,配置文件等)时需要有一些额外的工具,这些东西在生产容器中显然是不需要的。 继续使用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
“Indexer”是我们的app容器,它可以多次启动,将其配置更改为:
indexer:
ports:
- "8080:8080"
build: .
volumes:
- .:/src
links:
- db
- amqp
- search
掩盖了一个小小的问题:当我们发射其中许多时,映射的端口显然成了一个问题,并且实际上没有任何检查员可以使用。
我的第一个getto解决方案只是为了创建一个新的“indexer-dev”容器,仅用于调试目的,但是由于我们在shell上运行一个方便的fig up
只是为了提升所有内容,所以它不足,然后另一个fig run indexer dev bash
用于我们的调试目的。
所以我现在正在做的只是一个fig up
,然后手动启动带有neede转发端口的容器:
docker run -i -t -p 8080:8080 indexer:latest
以更自动的方式获得此功能的最佳方式是什么?比如开发人员可以通过无花果继续启动容器并选择可能有或可能没有出口端口的实例?
感谢您的任何建议。
欢呼声 卢西奥
答案 0 :(得分:7)
您可以在调用fig up
或fig run
采取以下图配置文件:
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
这允许您传递秘密或让容器的行为有所不同,具体取决于某些环境变量。