Unable to access docker container from the port mapped by docker

I have created a docker container but unable to run it on the port mapped by the docker (http://localhost:3000). Below are the details of docker configurations that I am using in my app.

Docker version : 17.05.0-ce

  • Docker in IntelliJ IDEA for Mac not working
  • How can I run my docker container with installed Nginx?
  • Custom nginx container exits immediately when part of docker-compose
  • Nginx on docker - daemonize and attach to bash [closed]
  • Connection Error when trying to talk with a VM through Docker api
  • Automatically create docker container and launch python script
  • Os : ubuntu 16.04

    My Dockerfile:

    FROM node:boron
    # Create app directory
    RUN mkdir -p /usr/src/app
    WORKDIR /usr/src/app
    COPY   . /usr/src/app
    RUN     npm install -g bower 
    RUN     npm install -g grunt-cli
    RUN     npm install 
    RUN     bower install --allow-root
    #RUN     grunt --force
    EXPOSE 3000
    CMD     ["grunt", "serve"]

    Creating docker container:

    docker build -t viki76/ng-app .

    Running Container:

    docker run  -p 3000:3000 -d viki76/ng-app

    docker ps:

    21541171d884   viki/ng-app   "grunt serve"  10 min ago Up>3000/tcp


    Updated Dockerfile configuration

    EXPOSE 9000

    $ docker run -p 9000:9000 viki76/ng-app

    Running "serve" task
    Running "clean:server" (clean) task
    >> 1 path cleaned.
    Running "wiredep:app" (wiredep) task
    Running "wiredep:test" (wiredep) task
    Running "concurrent:server" (concurrent) task
    Running "copy:styles" (copy) task
    Copied 2 files
    Done, without errors.
    Execution Time (2017-05-17 13:00:13 UTC-0)
    loading tasks               189ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 88%
    loading grunt-contrib-copy   11ms  ▇▇ 5%
    copy:styles                  16ms  ▇▇▇ 7%
    Total 216ms
    Running "postcss:server" (postcss) task
    >> 2 processed stylesheets created.
    Running "connect:livereload" (connect) task
    Started connect web server on http://localhost:9000
    Running "watch" task

    From Gruntfile.js

    connect: {
      options: {
        port: 9000,
        // Change this to '' to access the server from outside.
        hostname: '',
        livereload: 35729

    Please help me to fix it.

  • Docker 1.6 and Registy 2.0
  • How pass/set environment variables into HHVM?
  • How does Docker Swarm start a container
  • How to run Docker on Ubuntu 15.04?
  • Prometheus cAdvisor docker monitoring
  • Homebrew: Linking custom taps to existing bottles in bintray
  • 3 Solutions collect form web for “Unable to access docker container from the port mapped by docker”

    I think your problem is that grunt is binding to localhost:9000 – which is internal to the container so the port you’re publishing won’t have any effect.

    It needs to be listening on – I couldn’t tell you off hand what your Gruntfile.js should say for that to happen, but off-hand it looks like, out of the box, grunt serve will only serve from localhost.

    You’re doing everyhthing right, though I’m assuming that your problem is simply configuration.

    By default, grunt-serve serves on port 9000, not 3000. Do you want to try and EXPOSE and publish that port?

    Try running the container in Host mode:


    Pass the above when you run the container.

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