]>
Commit | Line | Data |
---|---|---|
1 | FROM node:10-stretch | |
2 | ||
3 | # Allow to pass extra options to the npm run build | |
4 | # eg: --light --light-fr to not build all client languages | |
5 | # (speed up build time if i18n is not required) | |
6 | ARG NPM_RUN_BUILD_OPTS | |
7 | ||
8 | RUN set -ex; \ | |
9 | if ! command -v gpg > /dev/null; then \ | |
10 | apt update; \ | |
11 | apt install -y --no-install-recommends \ | |
12 | gnupg \ | |
13 | dirmngr \ | |
14 | ; \ | |
15 | rm -rf /var/lib/apt/lists/*; \ | |
16 | fi | |
17 | ||
18 | # Install dependencies | |
19 | RUN apt update \ | |
20 | && apt -y install ffmpeg \ | |
21 | && rm /var/lib/apt/lists/* -fR | |
22 | ||
23 | # Add peertube user | |
24 | RUN groupadd -r peertube \ | |
25 | && useradd -r -g peertube -m peertube | |
26 | ||
27 | # grab gosu for easy step-down from root | |
28 | RUN set -eux; \ | |
29 | apt update; \ | |
30 | apt install -y gosu; \ | |
31 | rm -rf /var/lib/apt/lists/*; \ | |
32 | gosu nobody true | |
33 | ||
34 | # Install PeerTube | |
35 | WORKDIR /app | |
36 | COPY . ./ | |
37 | RUN chown -R peertube:peertube /app | |
38 | ||
39 | USER peertube | |
40 | ||
41 | RUN yarn install --pure-lockfile \ | |
42 | && npm run build -- $NPM_RUN_BUILD_OPTS \ | |
43 | && rm -r ./node_modules ./client/node_modules \ | |
44 | && yarn install --pure-lockfile --production \ | |
45 | && yarn cache clean | |
46 | ||
47 | USER root | |
48 | ||
49 | RUN mkdir /data /config | |
50 | RUN chown -R peertube:peertube /data /config | |
51 | ||
52 | ENV NODE_ENV production | |
53 | ENV NODE_CONFIG_DIR /config | |
54 | ||
55 | VOLUME /data | |
56 | VOLUME /config | |
57 | ||
58 | COPY ./support/docker/production/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh | |
59 | ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] | |
60 | ||
61 | # Run the application | |
62 | CMD ["npm", "start"] | |
63 | EXPOSE 9000 |