FROM alpine:3.14 AS common RUN apk add gnupg ffmpeg # Add peertube user RUN addgroup -S peertube && \ adduser -S -G peertube -h /var/lib/peertube peertube FROM common AS builder ## ## Download target release ## ENV PEERTUBE_RELEASE=v3.3.0 RUN apk add wget RUN mkdir -p /opt/apps/peertube && \ cd /opt/apps/peertube && \ wget https://github.com/Chocobozzz/PeerTube/releases/download/${PEERTUBE_RELEASE}/peertube-${PEERTUBE_RELEASE}.tar.xz && \ tar -xJf peertube-${PEERTUBE_RELEASE}.tar.xz && \ rm peertube-${PEERTUBE_RELEASE}.tar.xz && \ mv peertube-${PEERTUBE_RELEASE}/* . && \ rmdir peertube-${PEERTUBE_RELEASE} && \ mkdir -p /etc/peertube /var/lib/peertube && \ ln -sf /var/lib/peertube /opt/apps/peertube/storage RUN apk add yarn ## Build command RUN apk add git build-base python3 bash && \ ln -sf /usr/bin/python3 /usr/local/bin/python ## Build deps RUN chown -R peertube:peertube /opt/apps/peertube RUN apk add npm ## only needed to install things that should be in yarn USER peertube RUN cd /opt/apps/peertube && \ yarn install --production --pure-lockfile && \ yarn cache clean ## XXXvlab: without this in current docker version, it'll ## permeate in next image to be built. USER root # RUN apk add nodejs yarn # ## Source build (very long) # # ## To download source # RUN apk add git # RUN git clone https://github.com/chocobozzz/PeerTube /tmp/peertube --depth 1 # ## for installation of dependencies # RUN apk add build-base python # RUN cd /tmp/peertube && \ # yarn install --pure-lockfile # ## for scripts run by ``npm run build`` # RUN apk add bash # RUN cd /tmp/peertube && \ # npm run build # RUN cd /tmp/peertube && \ # rm -r ./node_modules ./client/node_modules && \ # yarn install --pure-lockfile --production && \ # yarn cache clean FROM common # Install PeerTube COPY --from=builder /opt/apps/peertube /opt/apps/peertube # RUN mkdir -p /var/lib/peertube /etc/peertube && \ # chown -R peertube:peertube /var/lib/peertube /etc/peertube # ENV PEERTUBE_APP_DIR=/opt/apps/peertube # ENV PEERTUBE_DATA_DIR=/var/lib/peertube ## This is important to set config dir of peertube ENV NODE_CONFIG_DIR=/etc/peertube ENV NODE_ENV=prod VOLUME /var/lib/peertube VOLUME /etc/peertube EXPOSE 9000 RUN apk add nodejs npm ## runtime deps RUN apk add openssl ## to check if postgres is fine BEFORE running the app RUN apk add postgresql-client COPY src/ . USER peertube WORKDIR /opt/apps/peertube CMD ["/entrypoint.sh"]