diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..4496a8d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +services: + - docker + +before_install: + - git clone https://github.com/oznu/docker-arm-ci.git ~/docker-arm-ci + +before_script: + - export TARGET_IMAGE_TAG=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then if [ "$TRAVIS_BRANCH" = "master" ]; then echo "armhf"; else echo "$TRAVIS_BRANCH-armhf"; fi; else echo ""; fi) + +script: + - ~/docker-arm-ci/run.sh diff --git a/Dockerfile b/Dockerfile index a46c8f2..98050e8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,67 +1,18 @@ -FROM oznu/s6-alpine +FROM library/node:8.9.1-alpine -ENV NPM_CONFIG_LOGLEVEL info -ENV NODE_VERSION 8.9.1 +ENV ARCH=amd64 S6_KEEP_ENV=1 -RUN addgroup -g 2000 node \ - && adduser -u 2000 -G node -s /bin/sh -D node \ - && apk add --no-cache \ - libstdc++ \ - && apk add --no-cache --virtual .build-deps \ - binutils-gold \ - curl \ - g++ \ - gcc \ - gnupg \ - libgcc \ - linux-headers \ - make \ - python \ - # gpg keys listed at https://github.com/nodejs/node#release-team - && for key in \ - 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ - FD3A5288F042B6850C66B31F09FE44734EB7990E \ - 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ - DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ - B9AE9905FFD7803F25714661B63B535A4C206CA9 \ - C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ - 56730D5401028683275BD23C23EFEFE93C4CFFFE \ - 77984A986EBC2AA786BC0F66B01FBB92821C587A \ - ; do \ - gpg --keyserver pgp.mit.edu --recv-keys "$key" || \ - gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \ - gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \ - done \ - && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \ - && curl -SLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xf "node-v$NODE_VERSION.tar.xz" \ - && cd "node-v$NODE_VERSION" \ - && ./configure \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - && apk del .build-deps \ - && cd .. \ - && rm -Rf "node-v$NODE_VERSION" \ - && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt +RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories \ + && apk add --no-cache curl coreutils tzdata shadow \ + && curl -L -s https://github.com/just-containers/s6-overlay/releases/download/v1.21.1.1/s6-overlay-${ARCH}.tar.gz | tar xvzf - -C / \ + && apk del --no-cache curl \ + && groupmod -g 911 users && \ + useradd -u 911 -U -d /config -s /bin/false abc && \ + usermod -G users abc && \ + mkdir -p /app /config /defaults && \ + apk del --purge \ + rm -rf /tmp/* -ENV YARN_VERSION 1.3.2 +COPY rootfs / -RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \ - && for key in \ - 6A010C5166006599AA17F08146C2130DFD2497F5 \ - ; do \ - gpg --keyserver pgp.mit.edu --recv-keys "$key" || \ - gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \ - gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \ - done \ - && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ - && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ - && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && mkdir -p /opt/yarn \ - && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/yarn --strip-components=1 \ - && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn \ - && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarnpkg \ - && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && apk del .build-deps-yarn +ENTRYPOINT [ "/init" ] diff --git a/Dockerfile.raspberry-pi b/Dockerfile.raspberry-pi index d272ed3..a5a8b89 100644 --- a/Dockerfile.raspberry-pi +++ b/Dockerfile.raspberry-pi @@ -1,67 +1,18 @@ -FROM oznu/s6-alpine:armhf +FROM arm32v6/node:8.9.1-alpine -ENV NPM_CONFIG_LOGLEVEL info -ENV NODE_VERSION 8.9.1 +ENV ARCH=armhf S6_KEEP_ENV=1 -RUN addgroup -g 2000 node \ - && adduser -u 2000 -G node -s /bin/sh -D node \ - && apk add --no-cache \ - libstdc++ \ - && apk add --no-cache --virtual .build-deps \ - binutils-gold \ - curl \ - g++ \ - gcc \ - gnupg \ - libgcc \ - linux-headers \ - make \ - python \ - # gpg keys listed at https://github.com/nodejs/node#release-team - && for key in \ - 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ - FD3A5288F042B6850C66B31F09FE44734EB7990E \ - 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ - DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ - B9AE9905FFD7803F25714661B63B535A4C206CA9 \ - C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ - 56730D5401028683275BD23C23EFEFE93C4CFFFE \ - 77984A986EBC2AA786BC0F66B01FBB92821C587A \ - ; do \ - gpg --keyserver pgp.mit.edu --recv-keys "$key" || \ - gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \ - gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \ - done \ - && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \ - && curl -SLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xf "node-v$NODE_VERSION.tar.xz" \ - && cd "node-v$NODE_VERSION" \ - && ./configure \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - && apk del .build-deps \ - && cd .. \ - && rm -Rf "node-v$NODE_VERSION" \ - && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt +RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories \ + && apk add --no-cache curl coreutils tzdata shadow \ + && curl -L -s https://github.com/just-containers/s6-overlay/releases/download/v1.21.1.1/s6-overlay-${ARCH}.tar.gz | tar xvzf - -C / \ + && apk del --no-cache curl \ + && groupmod -g 911 users && \ + useradd -u 911 -U -d /config -s /bin/false abc && \ + usermod -G users abc && \ + mkdir -p /app /config /defaults && \ + apk del --purge \ + rm -rf /tmp/* -ENV YARN_VERSION 1.3.2 +COPY rootfs / -RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \ - && for key in \ - 6A010C5166006599AA17F08146C2130DFD2497F5 \ - ; do \ - gpg --keyserver pgp.mit.edu --recv-keys "$key" || \ - gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \ - gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \ - done \ - && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ - && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ - && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && mkdir -p /opt/yarn \ - && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/yarn --strip-components=1 \ - && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn \ - && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarnpkg \ - && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && apk del .build-deps-yarn +ENTRYPOINT [ "/init" ] diff --git a/rootfs/etc/cont-finish.d/.gitkeep b/rootfs/etc/cont-finish.d/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/rootfs/etc/cont-init.d/.gitkeep b/rootfs/etc/cont-init.d/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/rootfs/etc/cont-init.d/10-adduser b/rootfs/etc/cont-init.d/10-adduser new file mode 100644 index 0000000..acfc0cc --- /dev/null +++ b/rootfs/etc/cont-init.d/10-adduser @@ -0,0 +1,19 @@ +#!/usr/bin/with-contenv sh + +PUID=${PUID:-911} +PGID=${PGID:-911} + +groupmod -o -g "$PGID" abc +usermod -o -u "$PUID" abc + +echo " +------------------------------------- +GID/UID +------------------------------------- +User uid: $(id -u abc) +User gid: $(id -g abc) +------------------------------------- +" +chown abc:abc /app +chown abc:abc /config +chown abc:abc /defaults diff --git a/rootfs/etc/cont-init.d/20-set-timezone b/rootfs/etc/cont-init.d/20-set-timezone new file mode 100644 index 0000000..957a7b6 --- /dev/null +++ b/rootfs/etc/cont-init.d/20-set-timezone @@ -0,0 +1,6 @@ +#!/usr/bin/with-contenv sh + +if [ $TZ ]; then + [ -f /usr/share/zoneinfo/$TZ ] && cp /usr/share/zoneinfo/$TZ /etc/localtime || echo "WARNING: $TZ is not a valid time zone." + [ -f /usr/share/zoneinfo/$TZ ] && echo "$TZ" > /etc/timezone +fi diff --git a/rootfs/etc/fix-attrs.d/.gitkeep b/rootfs/etc/fix-attrs.d/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/rootfs/etc/services.d/.gitkeep b/rootfs/etc/services.d/.gitkeep new file mode 100644 index 0000000..e69de29