| # Dockerized nvm development environment | |
| # | |
| # This Dockerfile is for building nvm development environment only, | |
| # not for any distribution/production usage. | |
| # | |
| # Please note that it'll use about 1.2 GB disk space and about 15 minutes to | |
| # build this image, it depends on your hardware. | |
| FROM ubuntu:16.04 | |
| LABEL maintainer="Peter Dave Hello <hsu@peterdavehello.org>" | |
| LABEL name="nvm-dev-env" | |
| LABEL version="latest" | |
| # Set the SHELL to bash with pipefail option | |
| SHELL ["/bin/bash", "-o", "pipefail", "-c"] | |
| # Prevent dialog during apt install | |
| ENV DEBIAN_FRONTEND noninteractive | |
| # ShellCheck version | |
| ENV SHELLCHECK_VERSION=0.7.0 | |
| # Pick a Ubuntu apt mirror site for better speed | |
| # ref: https://launchpad.net/ubuntu/+archivemirrors | |
| ENV UBUNTU_APT_SITE ubuntu.cs.utah.edu | |
| # Disable src package source | |
| RUN sed -i 's/^deb-src\ /\#deb-src\ /g' /etc/apt/sources.list | |
| # Replace origin apt package site with the mirror site | |
| RUN sed -E -i "s/([a-z]+.)?archive.ubuntu.com/$UBUNTU_APT_SITE/g" /etc/apt/sources.list | |
| RUN sed -i "s/security.ubuntu.com/$UBUNTU_APT_SITE/g" /etc/apt/sources.list | |
| # Install apt packages | |
| RUN apt update && \ | |
| apt upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" && \ | |
| apt install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \ | |
| coreutils \ | |
| util-linux \ | |
| bsdutils \ | |
| file \ | |
| openssl \ | |
| libssl-dev \ | |
| locales \ | |
| ca-certificates \ | |
| ssh \ | |
| wget \ | |
| patch \ | |
| sudo \ | |
| htop \ | |
| dstat \ | |
| vim \ | |
| tmux \ | |
| curl \ | |
| git \ | |
| jq \ | |
| realpath \ | |
| zsh \ | |
| ksh \ | |
| gcc-4.8 \ | |
| g++-4.8 \ | |
| xz-utils \ | |
| build-essential \ | |
| bash-completion && \ | |
| apt-get clean | |
| RUN wget https://github.com/koalaman/shellcheck/releases/download/v$SHELLCHECK_VERSION/shellcheck-v$SHELLCHECK_VERSION.linux.x86_64.tar.xz -O- | \ | |
| tar xJvf - shellcheck-v$SHELLCHECK_VERSION/shellcheck && \ | |
| mv shellcheck-v$SHELLCHECK_VERSION/shellcheck /bin && \ | |
| rmdir shellcheck-v$SHELLCHECK_VERSION | |
| RUN shellcheck -V | |
| # Set locale | |
| RUN locale-gen en_US.UTF-8 | |
| # Print tool versions | |
| RUN bash --version | head -n 1 | |
| RUN zsh --version | |
| RUN ksh --version || true | |
| RUN dpkg -s dash | grep ^Version | awk '{print $2}' | |
| RUN git --version | |
| RUN curl --version | |
| RUN wget --version | |
| # Add user "nvm" as non-root user | |
| RUN useradd -ms /bin/bash nvm | |
| # Copy and set permission for nvm directory | |
| COPY . /home/nvm/.nvm/ | |
| RUN chown nvm:nvm -R "home/nvm/.nvm" | |
| # Set sudoer for "nvm" | |
| RUN echo 'nvm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers | |
| # Switch to user "nvm" from now | |
| USER nvm | |
| # nvm | |
| RUN echo 'export NVM_DIR="$HOME/.nvm"' >> "$HOME/.bashrc" | |
| RUN echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> "$HOME/.bashrc" | |
| RUN echo '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> "$HOME/.bashrc" | |
| # nodejs and tools | |
| RUN bash -c 'source $HOME/.nvm/nvm.sh && \ | |
| nvm install node && \ | |
| npm install -g doctoc urchin eclint dockerfile_lint && \ | |
| npm install --prefix "$HOME/.nvm/"' | |
| # Set WORKDIR to nvm directory | |
| WORKDIR /home/nvm/.nvm | |
| ENTRYPOINT ["/bin/bash"] |