47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
#
 | 
						|
# nodejs with livereload
 | 
						|
#
 | 
						|
 | 
						|
# allow dynamic build by specifying base image as build arg
 | 
						|
ARG NODE_TAG="15-alpine3.12"
 | 
						|
FROM node:${NODE_TAG}
 | 
						|
 | 
						|
# change user id of node user
 | 
						|
ARG NODE_UID=9999
 | 
						|
RUN deluser --remove-home node \
 | 
						|
    && addgroup -g ${NODE_UID} -S node \
 | 
						|
    && adduser -G node -S -u ${NODE_UID} node
 | 
						|
 | 
						|
# add tini, timezone support
 | 
						|
RUN apk --update --no-cache add tzdata tini
 | 
						|
 | 
						|
# create default volume in case user forgets to map one
 | 
						|
VOLUME [ "/var/watch" ]
 | 
						|
 | 
						|
# expose port
 | 
						|
EXPOSE 9999
 | 
						|
 | 
						|
# default environment variables
 | 
						|
ENV TZ=Etc/UTC
 | 
						|
ENV NODE_ENV=production
 | 
						|
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
 | 
						|
ENV PATH=$PATH:/home/node/.npm-global/bin
 | 
						|
ENV EXT="html,xml,css,scss,sass,less,js,jsx,ts,tsx,php,py"
 | 
						|
ENV EEXT=""
 | 
						|
ENV EXCLUDE=".git/,.svn/"
 | 
						|
ENV DELAY=500
 | 
						|
 | 
						|
# install livereload for node user
 | 
						|
USER node
 | 
						|
WORKDIR /home/node
 | 
						|
RUN npm install livereload
 | 
						|
 | 
						|
# run node via tini by default
 | 
						|
ENTRYPOINT [ "/sbin/tini", "--" ]
 | 
						|
CMD [ "node", "livereload", "--port 9999", "--debug", "--exts $EXT", "--extraExts $EEXT", "--exclusions $EXCLUDE", "--wait $DELAY" ]
 | 
						|
 | 
						|
# set build timestamp and version labels
 | 
						|
ARG BUILD_DATE
 | 
						|
LABEL org.label-schema.version="0.1"
 | 
						|
LABEL org.label-schema.build-date=${BUILD_DATE}
 | 
						|
#EOF |