]>
Commit | Line | Data |
---|---|---|
1 | FROM node:12-buster-slim | |
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 | # Install dependencies | |
9 | RUN apt update \ | |
10 | && apt install -y --no-install-recommends openssl ffmpeg python ca-certificates gnupg gosu build-essential curl \ | |
11 | && gosu nobody true \ | |
12 | && rm /var/lib/apt/lists/* -fR | |
13 | ||
14 | # Add peertube user | |
15 | RUN groupadd -r peertube \ | |
16 | && useradd -r -g peertube -m peertube | |
17 | ||
18 | # Install PeerTube | |
19 | COPY --chown=peertube:peertube . /app | |
20 | WORKDIR /app | |
21 | ||
22 | USER peertube | |
23 | ||
24 | RUN yarn install --pure-lockfile \ | |
25 | && npm run build -- $NPM_RUN_BUILD_OPTS \ | |
26 | && rm -r ./node_modules ./client/node_modules \ | |
27 | && yarn install --pure-lockfile --production \ | |
28 | && yarn cache clean | |
29 | ||
30 | USER root | |
31 | ||
32 | RUN mkdir /data /config | |
33 | RUN chown -R peertube:peertube /data /config | |
34 | ||
35 | ENV NODE_ENV production | |
36 | ENV NODE_CONFIG_DIR /config | |
37 | ||
38 | VOLUME /data | |
39 | VOLUME /config | |
40 | ||
41 | COPY ./support/docker/production/entrypoint.sh /usr/local/bin/entrypoint.sh | |
42 | ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] | |
43 | ||
44 | # Expose API and RTMP | |
45 | EXPOSE 9000 1935 | |
46 | ||
47 | # Run the application | |
48 | CMD ["npm", "start"] |