Docker日志不显示颜色(express + nodejs图像)

一个小问题,但有趣的问题(对我来说):

我正在尝试从我写的一个小型服务器(nodejs + express)创builddocker镜像。 我的服务器代码是:

var express = require('express'); var Inflector = require('inflected'); var colors = require('colors'); var app = express(); app.get('/hello/:name', function(req, res, next){ var name = Inflector.titleize(req.params.name); console.log("Saying hello to " + name.yellow); res.send('Hello ' + name); }); var port = 9090; app.listen(port, function(){ console.log(('App is running on port ' + port).inverse); }); 

我用这个Dockerfile创build我的镜像:

 FROM centos:centos6 RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm RUN yum install -y npm COPY . /src RUN cd /src; npm install EXPOSE 9090 CMD ["node", "/src/index.js"] 

使用通用命令构build和运行映像:

 docker build -t username:centos-nodejs docker run -p 9090:9090 username:centos-nodejs 

我期待日志显示在命令行中的颜色,因为他们没有docker(例如node index.js )。

是什么原因,我可以解决这个问题?

您需要使用“-it”选项运行您的容器:

 docker run -it -p 9090:9090 username:centos-nodejs 

不是特定问题的答案,但是如果您使用debugging库并具有相同的问题,则会有一个非文档化的环境variables,即使在非TTY时也可以启用颜色:

https://github.com/visionmedia/debug/blob/39ecd87bcc145de5ca1cbea1bf4caed02c34d30a/node.js#L45

因此,将DEBUG_COLORS=true添加到您的环境variables中可以修复debugging库的颜色。