When I first start an application that I know will use docker, I like to avoid having to install ANY dependency that project may have. Docker is great for this, because I can create a linked setup / staging environment.
However, I'm also not really willing to give up some of the things i've done to make my terminal experience better. For this, I use zsh...
# Staging Container FROM node:8.12.0 # Set working directory RUN mkdir /usr/src/app WORKDIR /usr/src/app # Add app COPY . /usr/src/app # Install Zsh to make life easier RUN ["apt-get", "update"] RUN ["apt-get", "install", "-y", "zsh"] RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh || true # Add any global dependencies you need # RUN npm install -g @angular/cli CMD ["zsh"]
Once you have this Dockerfile in your application directory, you will need to build the image.
$ docker build . -t staging
The -t param allows you to alias your staging image. In this case, we have given it the alias "staging".
And finally, to get into the staging image and start your zsh journey...
$ docker run --rm -it staging -v "$PWD":/usr/src/app