]>
Commit | Line | Data |
---|---|---|
1 | FROM node:8-stretch | |
2 | ||
3 | RUN set -ex; \ | |
4 | if ! command -v gpg > /dev/null; then \ | |
5 | apt-get update; \ | |
6 | apt-get install -y --no-install-recommends \ | |
7 | gnupg \ | |
8 | dirmngr \ | |
9 | ; \ | |
10 | rm -rf /var/lib/apt/lists/*; \ | |
11 | fi | |
12 | ||
13 | # Install dependencies | |
14 | RUN apt-get update \ | |
15 | && apt-get -y install ffmpeg \ | |
16 | && rm /var/lib/apt/lists/* -fR | |
17 | ||
18 | # Add peertube user | |
19 | RUN groupadd -r peertube \ | |
20 | && useradd -r -g peertube -m peertube | |
21 | ||
22 | # grab gosu for easy step-down from root | |
23 | # https://github.com/tianon/gosu/releases | |
24 | ENV GOSU_VERSION 1.10 | |
25 | RUN set -ex; \ | |
26 | \ | |
27 | fetchDeps='ca-certificates wget'; \ | |
28 | apt-get update; \ | |
29 | apt-get install -y --no-install-recommends $fetchDeps; \ | |
30 | rm -rf /var/lib/apt/lists/*; \ | |
31 | \ | |
32 | dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ | |
33 | wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ | |
34 | wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \ | |
35 | export GNUPGHOME="$(mktemp -d)"; \ | |
36 | gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ | |
37 | gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ | |
38 | rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \ | |
39 | chmod +x /usr/local/bin/gosu; \ | |
40 | gosu nobody true; \ | |
41 | \ | |
42 | apt-get purge -y --auto-remove wget | |
43 | ||
44 | # Download the latest version | |
45 | RUN git clone https://github.com/Chocobozzz/PeerTube /app \ | |
46 | && chown -R peertube:peertube /app | |
47 | ||
48 | # Install PeerTube | |
49 | USER peertube | |
50 | WORKDIR /app | |
51 | ||
52 | RUN yarn install --pure-lockfile \ | |
53 | && npm run build | |
54 | ||
55 | # Configure PeerTube | |
56 | RUN cp /app/config/default.yaml /app/support/docker/production/config/default.yaml | |
57 | ENV NODE_ENV production | |
58 | ENV NODE_CONFIG_DIR /app/support/docker/production/config | |
59 | ||
60 | USER root | |
61 | RUN mkdir /data && chown peertube:peertube /data | |
62 | VOLUME /data | |
63 | ||
64 | COPY docker-entrypoint.sh /usr/local/bin/ | |
65 | ENTRYPOINT ["docker-entrypoint.sh"] | |
66 | ||
67 | # Run the application | |
68 | CMD ["npm", "start"] | |
69 | EXPOSE 9000 |