2016-03-04 135 views
3

我有一个容器,它运行带有三个服务器的节点应用程序:一个用于公用数据的服务器和两个webpack服务器。默认情况下,这些端口在端口3000,3001和3002上运行,但这些端口都可以配置。具有多个可配置端口的Docker容器

看来,我将能够运行,像这样的容器:

docker run -p 3000:3003 -p 3001:3004 -p 3002:3005 -e 'APP_PORT=3003' \ 
    -e 'NG_PORT=3004' -e 'RC_PORT=3005' --expose 3003 --expose 3004 --expose 3005 \ 
    ajcrites/webf 

但是有两个问题的方法:

  1. 有冗余的大量
  2. 我想要默认端口被使用/暴露如果没有指定

是否有更简单的方法来公开所有可配置端口,不管它们是否从默认值更改?

+0

我发表了这条评论以防万一。 它可能不是你正在寻找的东西(我不确定我是否理解你在寻找什么,如果这不相关,我很抱歉),但有** - P **选项可以自动分配外部端口暴露端口。 另外,您可以通过向dockerfile添加** EXPOSE **指令来公开端口。 – vmonteco

+0

yoiu不需要重复'-p',你可以指定几个不同的端口(没有它们连续) – Auzias

回答

2

你不希望公开所有的端口,但是你可以通过一系列因为至少泊坞窗1.5暴露和绑定:

docker run -p 3000-3002:3003-3005 

我不认为你需要,当你发布使用--expose 。

+0

你是否还需要使用相同的端口号来执行'--expose'? –

+0

你也可以暴露一个范围。 – Ray

+0

@ExplosionPills Expose只会将端口暴露给正在运行的Docker容器中的其他正在运行的服务,但不在外部,因此,如果您不需要通过docker中的端口进行锁定,则可以始终公开大范围的内容:http://stackoverflow.com/questions/22111060 /在不同的揭露和发布在码头 – Ray