X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=support%2Fdocker%2Fproduction%2FDockerfile.stretch;h=5025341f1dd7ca76836ebabcf79e77494e5a58d2;hb=9c85ee2ed079206d95130e86eceffaf74893c5e3;hp=c739247a64121c8d4f41d7499f2d39e362b5249c;hpb=e8395f027b6c3e3f757c740e35b20e76c51b03bd;p=github%2FChocobozzz%2FPeerTube.git diff --git a/support/docker/production/Dockerfile.stretch b/support/docker/production/Dockerfile.stretch index c739247a6..5025341f1 100644 --- a/support/docker/production/Dockerfile.stretch +++ b/support/docker/production/Dockerfile.stretch @@ -1,25 +1,63 @@ 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; \ + apt-get install -y --no-install-recommends \ + gnupg \ + dirmngr \ + ; \ + rm -rf /var/lib/apt/lists/*; \ +fi + # Install dependencies RUN apt-get update \ - && apt-get -y install ffmpeg \ - && rm /var/lib/apt/lists/* -fR + && apt-get -y install ffmpeg \ + && rm /var/lib/apt/lists/* -fR -# Install the application -WORKDIR /app +# Add peertube user +RUN groupadd -r peertube \ + && useradd -r -g peertube -m peertube +# grab gosu for easy step-down from root +RUN set -eux; \ + apt-get update; \ + apt-get install -y gosu; \ + rm -rf /var/lib/apt/lists/*; \ + gosu nobody true + +# Install PeerTube +WORKDIR /app COPY . ./ -RUN yarn install --pure-lockfile && npm run build +RUN chown -R peertube:peertube /app -# Configure the application -RUN groupadd -g 991 peertube \ - && useradd -u 991 -g peertube -d /data -m peertube USER peertube +RUN yarn install --pure-lockfile \ + && 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 + ENV NODE_ENV production -ENV NODE_CONFIG_DIR /app/support/docker/production/config +ENV NODE_CONFIG_DIR /config + +VOLUME /data +VOLUME /config + +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"] -VOLUME ["/data"] EXPOSE 9000