From 48644eccb87c9bdbf84bdf2102b54bdc0091af31 Mon Sep 17 00:00:00 2001 From: Fernando Correia Date: Sun, 29 Sep 2019 18:37:09 -0700 Subject: [PATCH] Add node v12 images --- README.md | 10 +++- bin/bower | 2 +- bin/generate-md | 2 +- bin/grunt | 2 +- bin/gulp | 2 +- bin/node | 2 +- bin/npm | 2 +- bin/npx | 2 +- bin/yarn | 2 +- node-12-alpine/.image-tags | 6 +++ node-12-alpine/Dockerfile | 89 ++++++++++++++++++++++++++++++++ node-12-debian/.image-tags | 6 +++ node-12-debian/Dockerfile | 102 +++++++++++++++++++++++++++++++++++++ test/lib/add-tests.sh | 2 +- 14 files changed, 221 insertions(+), 10 deletions(-) create mode 100644 node-12-alpine/.image-tags create mode 100644 node-12-alpine/Dockerfile create mode 100644 node-12-debian/.image-tags create mode 100644 node-12-debian/Dockerfile diff --git a/README.md b/README.md index d364afd..bdf3dcc 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,10 @@ Images are tagged according to the installed Node version and operating system. Based on [`node:alpine`](https://hub.docker.com/_/node/). This image should be considered under development and may not be as stable as versioned images. +#### [`node-12-alpine` Dockerfile](https://github.com/mkenney/docker-npm/blob/master/node-12-alpine/Dockerfile) + +Based on [`node:12-alpine`](https://hub.docker.com/r/library/node/tags/12-alpine/). + #### [`node-11-alpine` Dockerfile](https://github.com/mkenney/docker-npm/blob/master/node-11-alpine/Dockerfile) Based on [`node:11-alpine`](https://hub.docker.com/r/library/node/tags/11-alpine/). @@ -63,6 +67,10 @@ Based on [`node:6-alpine`](https://hub.docker.com/r/library/node/tags/6-alpine/) Based on [`node:latest`](https://hub.docker.com/r/library/node/tags/latest/). This image should be considered under development and may not be as stable as versioned images. +#### [`node-12-debian` Dockerfile](https://github.com/mkenney/docker-npm/blob/master/node-12-debian/Dockerfile) + +Based on [`node:12-stretch`](https://hub.docker.com/r/library/node/tags/12-stretch/). + #### [`node-11-debian` Dockerfile](https://github.com/mkenney/docker-npm/blob/master/node-11-debian/Dockerfile) Based on [`node:11-stretch`](https://hub.docker.com/r/library/node/tags/11-stretch/). @@ -142,7 +150,7 @@ The included [`run-as-user`](https://github.com/mkenney/docker-scripts/tree/mast mkenney/npm:latest ``` -The included [wrapper scripts](https://github.com/mkenney/docker-npm/blob/master/bin) default to the latest node version and image tag I feel is stable, I will update the default tag as updates are released or stability issues warrant (`node-10-alpine` at the moment). +The included [wrapper scripts](https://github.com/mkenney/docker-npm/blob/master/bin) default to the latest node version and image tag I feel is stable, I will update the default tag as updates are released or stability issues warrant (`node-12-alpine` at the moment). To specify a different image, you can define the image tag in your environment which will set a new default (you probably want to define this in your `.bashrc` or similar profile script): ```txt diff --git a/bin/bower b/bin/bower index 8ee73da..f10d076 100755 --- a/bin/bower +++ b/bin/bower @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/bin/generate-md b/bin/generate-md index f6bbef5..de24863 100755 --- a/bin/generate-md +++ b/bin/generate-md @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/bin/grunt b/bin/grunt index c750d0c..4bf28b0 100755 --- a/bin/grunt +++ b/bin/grunt @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/bin/gulp b/bin/gulp index 1216e5d..c6f1287 100755 --- a/bin/gulp +++ b/bin/gulp @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/bin/node b/bin/node index 3fa2f8f..f4acb6f 100755 --- a/bin/node +++ b/bin/node @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/bin/npm b/bin/npm index 726b948..627edcb 100755 --- a/bin/npm +++ b/bin/npm @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/bin/npx b/bin/npx index b8f2648..1109031 100755 --- a/bin/npx +++ b/bin/npx @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/bin/yarn b/bin/yarn index 8426a41..62c7772 100755 --- a/bin/yarn +++ b/bin/yarn @@ -1,6 +1,6 @@ #!/usr/bin/env sh -TAG=node-11-alpine +TAG=node-12-alpine if [ "" != "$DOCKER_NPM_TAG" ]; then TAG="$DOCKER_NPM_TAG" fi diff --git a/node-12-alpine/.image-tags b/node-12-alpine/.image-tags new file mode 100644 index 0000000..584a9d8 --- /dev/null +++ b/node-12-alpine/.image-tags @@ -0,0 +1,6 @@ +# This file is used to define which image tags are triggered for build in CI +# deployments + +declare -a TAGS=( + 'node-12-alpine' +) diff --git a/node-12-alpine/Dockerfile b/node-12-alpine/Dockerfile new file mode 100644 index 0000000..5781feb --- /dev/null +++ b/node-12-alpine/Dockerfile @@ -0,0 +1,89 @@ +FROM node:12-alpine + +LABEL org.label-schema.schema-version = 1.0.0 \ + org.label-schema.vendor = mkenney@webbedlam.com \ + org.label-schema.vcs-url = https://github.com/mkenney/docker-npm \ + org.label-schema.description = "This image provides node based build tools." \ + org.label-schema.name = "NPM" \ + org.label-schema.url = http://mkenney.github.io/docker-npm/ + +ENV TERM=xterm \ + NLS_LANG=American_America.AL32UTF8 \ + LANG=C.UTF-8 \ + LANGUAGE=C.UTF-8 \ + LC_ALL=C.UTF-8 \ + TIMEZONE=America/Denver + +######################################################################## +# Build tools +######################################################################## +RUN set -x \ + && apk update \ + && apk add \ + acl \ + ca-certificates \ + curl \ + git \ + gnupg \ + mercurial \ + rsync \ + shadow \ + subversion \ + sudo + +RUN set -x \ + && touch /root/.profile \ + # Install node packages + && npm install --silent -g \ + gulp-cli \ + grunt-cli \ + bower \ + markdown-styles \ + npx \ + # Configure root account + && echo "export NLS_LANG=$(echo $NLS_LANG)" >> /root/.profile \ + && echo "export LANG=$(echo $LANG)" >> /root/.profile \ + && echo "export LANGUAGE=$(echo $LANGUAGE)" >> /root/.profile \ + && echo "export LC_ALL=$(echo $LC_ALL)" >> /root/.profile \ + && echo "export TERM=xterm" >> /root/.profile \ + && echo "export PATH=$(echo $PATH)" >> /root/.profile \ + && echo "cd /src" >> /root/.profile \ + # Create a dev user to use as the directory owner + && addgroup dev \ + && adduser -D -s /bin/sh -G dev dev \ + && echo "dev:password" | chpasswd \ + && curl --compressed -o- -L https://yarnpkg.com/install.sh | sh \ + && rsync -a /root/ /home/dev/ \ + && chown -R dev:dev /home/dev/ \ + && chmod 0777 /home/dev \ + && chmod -R u+rwX,g+rwX,o+rwX /home/dev \ + && setfacl -R -d -m user::rwx,group::rwx,other::rwx /home/dev \ + # Setup wrapper scripts + && curl -o /run-as-user https://raw.githubusercontent.com/mkenney/docker-scripts/master/container/run-as-user \ + && chmod 0755 /run-as-user + +############################################################################## +# ~ fin ~ +############################################################################## + +RUN set -x \ + && apk del \ + curl \ + gnupg \ + linux-headers \ + paxctl \ + python \ + rsync \ + tar \ + && rm -rf \ + /var/cache/apk/* \ + ${NODE_PREFIX}/lib/node_modules/npm/man \ + ${NODE_PREFIX}/lib/node_modules/npm/doc \ + ${NODE_PREFIX}/lib/node_modules/npm/html + + +VOLUME /src +WORKDIR /src + +ENTRYPOINT ["/run-as-user"] +CMD ["/usr/local/bin/npm"] diff --git a/node-12-debian/.image-tags b/node-12-debian/.image-tags new file mode 100644 index 0000000..f259920 --- /dev/null +++ b/node-12-debian/.image-tags @@ -0,0 +1,6 @@ +# This file is used to define which image tags are triggered for build in CI +# deployments + +declare -a TAGS=( + 'node-12-debian' +) diff --git a/node-12-debian/Dockerfile b/node-12-debian/Dockerfile new file mode 100644 index 0000000..0416c7b --- /dev/null +++ b/node-12-debian/Dockerfile @@ -0,0 +1,102 @@ +FROM node:12-stretch + +LABEL org.label-schema.schema-version = 1.0.0 \ + org.label-schema.vendor = mkenney@webbedlam.com \ + org.label-schema.vcs-url = https://github.com/mkenney/docker-npm \ + org.label-schema.description = "This image provides node based build tools." \ + org.label-schema.name = "NPM" \ + org.label-schema.url = http://mkenney.github.io/docker-npm/ + +ENV TERM=xterm \ + NLS_LANG=American_America.AL32UTF8 \ + LANG=C.UTF-8 \ + LANGUAGE=C.UTF-8 \ + LC_ALL=C.UTF-8 \ + TIMEZONE=America/Denver + +RUN set -x \ + && apt-get -qq update \ + && apt-get install -qqy apt-transport-https apt-utils \ + && apt-get -qq upgrade \ + && apt-get -qq dist-upgrade \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ + && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ + && apt-get -qq update \ + && apt-get install -qqy \ + acl \ + git \ + mercurial \ + rsync \ + subversion \ + sudo \ + wget \ + # Restore a borne-shell compatible default shell + && rm /bin/sh \ + && ln -s /bin/bash /bin/sh + + +# install npm packages +RUN set -x \ + && npm install --silent --global \ + gulp-cli \ + grunt-cli \ + bower \ + markdown-styles \ + npx \ + && curl --compressed -o- -L https://yarnpkg.com/install.sh | sh + +############################################################################## +# UTF-8 Locale, timezone +############################################################################## + +RUN set -x \ + && apt-get install -qqy locales \ + && locale-gen C.UTF-8 ${UTF8_LOCALE} \ + && dpkg-reconfigure locales \ + && /usr/sbin/update-locale LANG=C.UTF-8 LANGUAGE=C.UTF-8 LC_ALL=C.UTF-8 \ + && export LANG=C.UTF-8 \ + && export LANGUAGE=C.UTF-8 \ + && export LC_ALL=C.UTF-8 \ + && echo $TIMEZONE > /etc/timezone \ + && dpkg-reconfigure -f noninteractive tzdata + +############################################################################## +# users +############################################################################## + +RUN set -x \ + # Configure root account + && echo "export NLS_LANG=$(echo $NLS_LANG)" >> /root/.bash_profile \ + && echo "export LANG=$(echo $LANG)" >> /root/.bash_profile \ + && echo "export LANGUAGE=$(echo $LANGUAGE)" >> /root/.bash_profile \ + && echo "export LC_ALL=$(echo $LC_ALL)" >> /root/.bash_profile \ + && echo "export TERM=xterm" >> /root/.bash_profile \ + && echo "export PATH=$(echo $PATH)" >> /root/.bash_profile \ + && echo "cd /src" >> /root/.bash_profile \ + && echo "source \$HOME/.bashrc" >> /root/.bash_profile \ + # Add a dev user and configure + && groupadd dev \ + && useradd dev -s /bin/bash -m -g dev \ + && echo "dev:password" | chpasswd \ + && echo "dev ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers \ + && rsync -a /root/ /home/dev/ \ + && chown -R dev:dev /home/dev/ \ + && chmod 0777 /home/dev \ + && chmod -R u+rwX,g+rwX,o+rwX /home/dev \ + && setfacl -R -d -m user::rwx,group::rwx,other::rwx /home/dev + +############################################################################## +# ~ fin ~ +############################################################################## + +RUN set -x \ + && wget -O /run-as-user https://raw.githubusercontent.com/mkenney/docker-scripts/master/container/run-as-user \ + && chmod 0755 /run-as-user \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +VOLUME /src +WORKDIR /src + +ENTRYPOINT ["/run-as-user"] +CMD ["/usr/local/bin/npm"] diff --git a/test/lib/add-tests.sh b/test/lib/add-tests.sh index 08a8c53..2bf6fb3 100644 --- a/test/lib/add-tests.sh +++ b/test/lib/add-tests.sh @@ -10,7 +10,7 @@ add_tests() { release) tests="1.build;install;bower;md;grunt;gulp;node;npm;npx;yarn" ;; - node-alpine/*|node-debian/*|node-11-alpine/*|node-11-debian/*|node-10-alpine/*|node-10-debian/*|node-9-alpine/*|node-9-debian/*|node-8-alpine/*|node-8-debian/*|node-7-alpine/*|node-7-debian/*|node-7.7-alpine/*|node-7.0-debian/*|node-6.9-alpine/*|node-6.9-debian/*|node-6-alpine/*|node-6-debian/*) + node-alpine/*|node-debian/*|node-12-alpine/*|node-12-debian/*|node-11-alpine/*|node-11-debian/*|node-10-alpine/*|node-10-debian/*|node-9-alpine/*|node-9-debian/*|node-8-alpine/*|node-8-debian/*|node-7-alpine/*|node-7-debian/*|node-7.7-alpine/*|node-7.0-debian/*|node-6.9-alpine/*|node-6.9-debian/*|node-6-alpine/*|node-6-debian/*) tests="1.build" ;; .travis.yml)