自动获取Docker容器中的主机名

我们在托pipe在Amazon EC2实例上的Docker容器中运行NodeJS应用程序。 至

为了使用Datadog监控Node.js应用程序,我们使用datadog-metrics库并将其与我们的应用程序集成。 我们基本上需要将下面的Javascript代码保存到一个名为example_app.js的文件中

var metrics = require('datadog-metrics'); metrics.init({ **host: 'myhost', prefix: 'myapp.'** }); function collectMemoryStats() { var memUsage = process.memoryUsage(); metrics.gauge('memory.rss', memUsage.rss); metrics.gauge('memory.heapTotal', memUsage.heapTotal); metrics.gauge('memory.heapUsed', memUsage.heapUsed); metrics.increment('memory.statsReported'); } setInterval(collectMemoryStats, 5000); 

虽然,我们能够成功发布度量标准,但是我们想知道这是否可以自动化。 我们希望将其构build到Docker镜像中,因此需要自动获取主机名,至less可以使用Docker主机名。因为直到现在我们手动指定“myhost”和“myapp “值手动。 将AWS实例主机名值读取到%myhost中的更好方法?

为什么不试试?

  var os = require(“os”); var hostname = os.hostname(); 

它将返回docker容器的主机名。 如果你没有明确地设置一个主机名,使用像docker run -h hostname image command那么它将返回docker主机的主机名。

或者,您可以使用像puppet,ansible等部署工具来做到这一点,并在部署容器时对文件进行模板化。