Created
March 22, 2018 16:10
-
-
Save wbandrew/767e7b577912d62c37b85315633ed54c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM node:8-alpine | |
LABEL maintainer "Andrew Cates <andrew@waybetter.com>" | |
ARG BUILD_DATE | |
ARG VCS_REF | |
ARG VN | |
LABEL org.label-schema.name="Docker David" | |
LABEL org.label-schema.description="Docker David" | |
LABEL org.label-schema.version="$VN" | |
LABEL org.label-schema.url="http://waybetterdev.github.io/docker.david/" | |
LABEL org.label-schema.docker.dockerfile="/Dockerfile" | |
LABEL org.label-schema.build-date=$BUILD_DATE | |
LABEL org.label-schema.vcs-ref=$VCS_REF | |
LABEL org.label-schema.vcs-url="https://waybetterdev.github.io/docker/david.git" | |
LABEL org.label-schema.vcs-type="Git" | |
ENV TIMEZONE US/Pacific | |
ENV LANG=en_US.UTF-8 | |
ENV LC_ALL=en_US.UTF-8 | |
ENV LANGUAGE=en_US:en | |
ENV MUSL_VERSION=1.1.17-r1 | |
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories && \ | |
echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \ | |
echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ | |
apk --no-cache update && \ | |
apk add --no-cache --update \ | |
bash \ | |
gosu \ | |
binutils \ | |
coreutils \ | |
curl ^ \ | |
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && \ | |
echo "${TIMEZONE}" > /etc/timezone | |
# Here we install GNU libc (aka glibc) and set C.UTF-8 locale as default. | |
# User/Pass | |
ENV DAVID_GROUP=david | |
ENV DAVID_USER=david | |
ENV DAVID_HOME="/home/${DAVID_USER}" | |
ENV DAVID_LOG_DIR=/var/log/david | |
ENV DAVID_CACHE_DIR=/etc/docker-david | |
ENV DAVID_INSTALL_DIR="${DAVID_HOME}/david" | |
ENV DAVID_DATA_DIR="${DAVID_HOME}/data" | |
ENV DAVID_BUILD_DIR="${DAVID_CACHE_DIR}/build" | |
ENV DAVID_RUNTIME_DIR="${DAVID_CACHE_DIR}/runtime" | |
ENV DAVID_PID_DIR="${DAVID_INSTALL_DIR}/tmp/pids" | |
ENV DAVID_SOCKET_DIR="${DAVID_INSTALL_DIR}/tmp/sockets" | |
# User | |
ARG UID=1003 | |
ARG GID=1001 | |
RUN addgroup -g $GID $DAVID_GROUP \ | |
&& adduser -Ss /bin/false -u $UID -G $DAVID_GROUP -h $DAVID_HOME $DAVID_USER | |
# Build temp dirs | |
RUN mkdir -p ${DAVID_INSTALL_DIR} | |
RUN chgrp $DAVID_GROUP ${DAVID_INSTALL_DIR} | |
RUN chmod g+w ${DAVID_INSTALL_DIR} | |
RUN mkdir -p ${DAVID_BUILD_DIR} | |
RUN chgrp $DAVID_GROUP ${DAVID_BUILD_DIR} | |
RUN chmod g+w ${DAVID_BUILD_DIR} | |
RUN mkdir -p ${DAVID_LOG_DIR} | |
RUN chgrp $DAVID_GROUP ${DAVID_LOG_DIR} | |
RUN chmod g+w ${DAVID_LOG_DIR} | |
# Create the log file to be able to run tail | |
RUN touch /var/log/cron.log | |
# Begin Installation | |
ENV NODE_ENV=production | |
RUN npm install -g node-gyp | |
RUN npm install -g grunt-cli | |
USER $DAVID_USER | |
WORKDIR $DAVID_HOME | |
ENV PATH "./bin:${DAVID_HOME}/.bin:./node_modules/.bin:$PATH" | |
# Set PATH (fixes cron job PATH issues) | |
RUN touch ${DAVID_HOME}/.profile | |
RUN echo "PATH=./bin:${DAVID_HOME}/.bin:./node_modules/.bin:$PATH" > ${DAVID_HOME}/.profile | |
RUN touch ${DAVID_HOME}/.npmrc | |
RUN echo "color=false" > ${DAVID_HOME}/.npmrc | |
RUN echo "loglevel=error" >> ${DAVID_HOME}/.npmrc | |
RUN echo "spin=false" >> ${DAVID_HOME}/.npmrc | |
RUN echo "progress=false" >> ${DAVID_HOME}/.npmrc | |
RUN echo "depth=0" >> ${DAVID_HOME}/.npmrc | |
RUN echo "@waybetterdev:registry=https://registry.blah/" >> ${DAVID_HOME}/.npmrc | |
WORKDIR $DAVID_INSTALL_DIR | |
ENV NPM_URL=https://registry.blah | |
ENV NPM_PACKAGE=@waybetterdev/david-www | |
ENV NPM_VERSION=22.1.0 | |
RUN wget -cq ${NPM_URL}/${NPM_PACKAGE}/-/${NPM_PACKAGE}-${NPM_VERSION}.tgz -O ${DAVID_BUILD_DIR}/david.tar.gz \ | |
&& tar xf ${DAVID_BUILD_DIR}/david.tar.gz --strip 1 -C ${DAVID_INSTALL_DIR} \ | |
&& rm -rf ${DAVID_BUILD_DIR}/gitlab.tar.gz \ | |
&& cd ${DAVID_INSTALL_DIR} \ | |
&& echo "Fix bug https://github.com/sass/node-sass/issues/1879" \ | |
&& npm install node-sass@4.5.0 --save \ | |
&& echo "Fix for Seg Fault Error" \ | |
&& npm install level@1.3.0 --save \ | |
&& echo "Fix bug https://github.com/npm/npm/issues/9863" \ | |
&& npm install --production \ | |
&& mv ./node_modules ./node_modules.tmp \ | |
&& mv ./node_modules.tmp ./node_modules \ | |
&& npm install \ | |
&& npm run build \ | |
&& npm cache clean --force \ | |
&& mkdir -p ./data/development \ | |
&& mkdir -p ./data/production | |
USER root | |
COPY ./davidrc ./.davidrc | |
RUN chown $DAVID_USER:$DAVID_GROUP ./.davidrc | |
ENV PORT=8080 | |
CMD ["gosu", "david", "node", "dist/main"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment