4

A petty, yet interesting question (for me):

I'm trying to create docker image from a small server( nodejs + express) I wrote. My server code is:

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);
});

I'm creating my image with this Dockerfile:

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"]

Building and running the image with the common commands:

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

I was expecting the logs to show up with colors in the command line as they do without docker (e.g. node index.js).

What is the cause and can I fix this?

mscdex
  • 104,356
  • 15
  • 192
  • 153
Shikloshi
  • 3,761
  • 7
  • 32
  • 58

2 Answers2

6

You need to run your container with "-it" options:

docker run -it -p 9090:9090 username:centos-nodejs
Alex da Silva
  • 4,552
  • 2
  • 17
  • 25
6

Not quite the answer to this specific problem, but if you're using the debug library and have the same issue there is a non-documented environment variable that enables the colors even when in a non TTY:

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

So adding DEBUG_COLORS=true to your environment variables fixes it for the debug library colors.

DShook
  • 14,833
  • 9
  • 45
  • 55