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: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            \ | |
|         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"]
 | |
| 
 |