Docker logs not showing colors (express + nodejs image)

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:

  • Gitlab CI Runner | Custom mysql conf
  • docker service not listen to tcp port
  • GitLab CI ERROR: Preparation failed: Post https…docker%3Adind: net/http: timeout awaiting response headers
  • How to send alerts based on Kubernetes / Docker events?
  • Docker exits immediately after run. However, Kitematic runs without issue
  • Pre Configured Environment variables in Jenkins
  • 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?

  • install mongoose in docker container
  • Unable to push my docker to Bluemix - Login error
  • Build a full Ubuntu desktop docker image
  • Docker-based Ambari 1.7 cluster install wizard repo URL dead (404) while 'Running setup agent script'
  • Restart a Docker service when config changes
  • traefik reverse-proxy with docker backend - configure frontend rules in traefik's config file and not via container label
  • 2 Solutions collect form web for “Docker logs not showing colors (express + nodejs image)”

    You need to run your container with “-it” options:

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

    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.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.