You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							116 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
	
	
							116 lines
						
					
					
						
							3.9 KiB
						
					
					
				# 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. | 
						|
 | 
						|
# Use Ubuntu Trusty Tahr as base image as we're using on Travis CI | 
						|
# I also tested with Ubuntu 16.04, should be good with it! | 
						|
FROM ubuntu:14.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.6.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            \ | 
						|
        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 | 
						|
 | 
						|
# ShellCheck with Ubuntu 14.04 container workaround | 
						|
RUN wget https://storage.googleapis.com/shellcheck/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                          && \ | 
						|
    touch /tmp/libc.so.6                                           && \ | 
						|
    echo "alias shellcheck='LD_LIBRARY_PATH=/tmp /bin/shellcheck'" >> /etc/bash.bashrc | 
						|
RUN LD_LIBRARY_PATH=/tmp 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"]
 | 
						|
 |