I got the answer for this question in irc chat. Given here for the benefit of anyone who may come across this. Many people have given wrong answers as update the ~/.profile but that did not work. So use the answer below.
Update the file ~/.bashrc for user or update the file /etc/enviroment global for global change which will apply for all users.
In .bashrc export PATH: export PATH=$PATH:/new/path/bin
The best voted answer suggests to add ENV PATH "$PATH:/new/path" to the Dockerfile, and this should indeed work.
2. So why doesn't it work for me?
As noted in some comments/answers, the solution 1. does not work for some people.
The reason is that the PATH can be overwritten by some script like .bashrc when running the docker container, giving thus the impression that the ENV PATH... did not work, but it theoretically did.
To solve the issue, you need to append to the .bashrc the correct PATH by adding the below command to your Dockerfile:
RUN echo "export PATH=/new/path:${PATH}" >> /root/.bashrc
The difference between interactive and non-interactive shells is not noted. Hence, that's why above solutions sometimes seem to work and sometimes not.
bashrc files typically get skipped for non-interactive shells. For instance in Debian, the /etc/bash.bashrc file very clearly states:
# System-wide .bashrc file for interactive bash(1) shells.
# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
A RUN command in Dockerfile invokes a non-interactive shell. And the path set by ENV will be taken and bashrc scripts will not run.
docker run -it <image> /bin/bash invokes an interactive shell. bashrc will be run and could override anything set in ENV, if the for instance PATH is not defined in the usual PATH=$PATH:/... syntax in any of the bashrc scripts.
In order to be safe and consistent between the 2 modes of operation, one could do in Dockerfile:
ENV PATH /master/go/bin:${PATH}
RUN echo "${PATH}" >> /etc/bash.bashrc
Note that /etc/bash.bashrc is the Debian location and probably is different on other distribution images.