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:

  • ARG or ENV, which one to use in this case?
  • Debug on Docker throws an error
  • Kubernetes : Dynamic Persistent Volume provisioning using NFS
  • How to compile C code that is using kernel function in docker and use pci device in container?
  • Docker - adding DNS by editing “docker” file
  • Docker can't connect to docker daemon
  • 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?

  • Jenkins run job in local docker image
  • What is the procedure for addition and removal of capabilities in docker?
  • Connecting to a USB Android Device in a Docker Container via adb
  • How to filter docker process based on image
  • Automatically mounting host folders other than c:\Users in Docker images in Windows
  • Why not run uwsgi instances as root
  • 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.