aboutsummaryrefslogtreecommitdiffstats
path: root/docker/Dockerfile
blob: a561509cd58cb42806c2d4d55dd349d08f850124 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
FROM lsiobase/alpine:3.11

# version labels
ARG BUILD_DATE
LABEL build_version="Ferdi-server-docker Build-date:- ${BUILD_DATE}"
LABEL maintainer="xthursdayx"

ARG FERDI_RELEASE
ENV NODE_VERSION=10.16.3 
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2

# install packages
RUN \
  echo "**** installing build packages ****" && \
  apk add --no-cache \
   libcap \
   libstdc++ \
   nano && \
  apk add --no-cache --virtual .build-deps \
   binutils-gold \
   curl \
   gnupg \
   gcc \
   g++ \
   linux-headers \
   make \
   memcached \
   python && \
  echo "**** downloading keys ****" && \
  # gpg keys listed at https://github.com/nodejs/node#release-keys
  for key in \
    94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
    FD3A5288F042B6850C66B31F09FE44734EB7990E \
    71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
    DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
    C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
    B9AE9905FFD7803F25714661B63B535A4C206CA9 \
    77984A986EBC2AA786BC0F66B01FBB92821C587A \
    8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
    4ED778F539E3634C779C87C6D7062848A1AB005C \
    A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
    B9E2F5981AA6E0CD28160D9FF13993A75599653C \
  ; do \
    gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
    gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
    gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
  done && \
  echo "**** installing node ****" && \
  curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" && \
  curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && \
  gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && \
  grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - && \
  tar -xf "node-v$NODE_VERSION.tar.xz" && \
  cd "node-v$NODE_VERSION" && \
  ./configure --prefix=/usr && \
  make -j$(getconf _NPROCESSORS_ONLN) V= && \
  make install && \
  apk del .build-deps && \
  cd / && \
  rm -Rf "node-v$NODE_VERSION" && \
  rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt

COPY . /app
  
RUN \
  apk add --no-cache --virtual .build-deps-ferdi \
  curl \
  gnupg \
  tar && \
  echo "**** installing npm ****" && \
  npm config set unsafe-perm true && \
  npm install -g npm@latest && \
  find /usr/lib/node_modules/npm -name test -o -name .bin -type d | xargs rm -rf && \
  echo "**** cleanup ****" && \
  apk del .build-deps-ferdi && \
  rm -rf \
   ${RM_DIRS} \
   /SHASUMS256.txt \
   /tmp/* \
   /var/cache/apk/* \
   /usr/share/man/* \
   /usr/share/doc \
   /root/.node-gyp \
   /root/.config \
   /usr/lib/node_modules/npm/man \
   /usr/lib/node_modules/npm/doc \
   /usr/lib/node_modules/npm/html \
   /usr/lib/node_modules/npm/scripts
  
COPY docker/root/ /

USER root

# ports and volumes
EXPOSE 80 443
VOLUME /app/database /app/recipes /config