X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=support%2Fdocker%2Fproduction%2FDockerfile.stretch;h=5025341f1dd7ca76836ebabcf79e77494e5a58d2;hb=9c85ee2ed079206d95130e86eceffaf74893c5e3;hp=bf2bae510dad1352c33a38d34f3325cf1ad95825;hpb=399d20eae6ec4e7a7fda1afd0e8b1a11a2cb1714;p=github%2FChocobozzz%2FPeerTube.git diff --git a/support/docker/production/Dockerfile.stretch b/support/docker/production/Dockerfile.stretch index bf2bae510..5025341f1 100644 --- a/support/docker/production/Dockerfile.stretch +++ b/support/docker/production/Dockerfile.stretch @@ -1,5 +1,10 @@ FROM node:8-stretch +# Allow to pass extra options to the npm run build +# eg: --light --light-fr to not build all client languages +# (speed up build time if i18n is not required) +ARG NPM_RUN_BUILD_OPTS + RUN set -ex; \ if ! command -v gpg > /dev/null; then \ apt-get update; \ @@ -20,49 +25,38 @@ RUN groupadd -r peertube \ && useradd -r -g peertube -m peertube # grab gosu for easy step-down from root -# https://github.com/tianon/gosu/releases -ENV GOSU_VERSION 1.10 -RUN set -ex; \ - \ - fetchDeps='ca-certificates wget'; \ - apt-get update; \ - apt-get install -y --no-install-recommends $fetchDeps; \ - rm -rf /var/lib/apt/lists/*; \ - \ - dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ - wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ - wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \ - export GNUPGHOME="$(mktemp -d)"; \ - gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ - gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ - rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \ - chmod +x /usr/local/bin/gosu; \ - gosu nobody true; \ - \ - apt-get purge -y --auto-remove wget - -# Download the latest version -RUN git clone https://github.com/Chocobozzz/PeerTube /app \ - && chown -R peertube:peertube /app +RUN set -eux; \ + apt-get update; \ + apt-get install -y gosu; \ + rm -rf /var/lib/apt/lists/*; \ + gosu nobody true # Install PeerTube -USER peertube WORKDIR /app +COPY . ./ +RUN chown -R peertube:peertube /app + +USER peertube RUN yarn install --pure-lockfile \ - && npm run build + && npm run build -- $NPM_RUN_BUILD_OPTS \ + && rm -r ./node_modules ./client/node_modules \ + && yarn install --pure-lockfile --production \ + && yarn cache clean + +USER root + +RUN mkdir /data /config +RUN chown -R peertube:peertube /data /config -# Configure PeerTube -RUN cp /app/config/default.yaml /app/support/docker/production/config/default.yaml ENV NODE_ENV production -ENV NODE_CONFIG_DIR /app/support/docker/production/config +ENV NODE_CONFIG_DIR /config -USER root -RUN mkdir /data && chown peertube:peertube /data VOLUME /data +VOLUME /config -COPY docker-entrypoint.sh /usr/local/bin/ -ENTRYPOINT ["docker-entrypoint.sh"] +COPY ./support/docker/production/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] # Run the application CMD ["npm", "start"]