5
5
# Dockerfile.django-alpine to use the caching mechanism of Docker.
6
6
7
7
# Ref: https://devguide.python.org/#branchstatus
8
- FROM python:3.11.9-alpine3.20@sha256:df44c0c0761ddbd6388f4549cab42d24d64d257c2a960ad5b276bb7dab9639c7 AS base
8
+ FROM node:20.18.2-alpine3.20@sha256:40cbd847a2db119ba716f2861b04076bcb575a0051923459271a18ff80944f7f AS node
9
+
10
+ FROM python:3.11.9-alpine3.20@sha256:f9ce6fe33d9a5499e35c976df16d24ae80f6ef0a28be5433140236c2ca482686 AS base
11
+
9
12
FROM base AS build
10
13
WORKDIR /app
11
14
RUN \
@@ -31,97 +34,11 @@ COPY requirements.txt ./
31
34
# https://github.com/unbit/uwsgi/issues/1318#issuecomment-542238096
32
35
RUN CPUCOUNT=1 pip3 wheel --wheel-dir=/tmp/wheels -r ./requirements.txt
33
36
34
- FROM build AS collectstatic
35
-
36
- # Node installation from https://github.com/nodejs/docker-node
37
- ENV NODE_VERSION=20.11.0
38
-
39
- RUN addgroup -g 1000 node \
40
- && adduser -u 1000 -G node -s /bin/sh -D node \
41
- && apk add --no-cache \
42
- libstdc++ \
43
- && apk add --no-cache --virtual .build-deps \
44
- curl \
45
- && ARCH= && alpineArch="$(apk --print-arch)" \
46
- && case "${alpineArch##*-}" in \
47
- x86_64) \
48
- ARCH='x64' \
49
- CHECKSUM=$(curl -sSL --compressed "https://unofficial-builds.nodejs.org/download/release/v${NODE_VERSION}/SHASUMS256.txt" | grep "node-v${NODE_VERSION}-linux-x64-musl.tar.xz" | cut -d' ' -f1) \
50
- ;; \
51
- *) ;; \
52
- esac \
53
- && if [ -n "${CHECKSUM}" ]; then \
54
- set -eu; \
55
- curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \
56
- echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
57
- && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
58
- && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
59
- else \
60
- echo "Building from source" \
61
- # backup build
62
- && apk add --no-cache --virtual .build-deps-full \
63
- binutils-gold \
64
- g++ \
65
- gcc \
66
- gnupg \
67
- libgcc \
68
- linux-headers \
69
- make \
70
- python3 \
71
- # gpg keys listed at https://github.com/nodejs/node#release-keys
72
- && for key in \
73
- C0D6248439F1D5604AAFFB4021D900FFDB233756 \
74
- DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \
75
- CC68F5A3106FF448322E48ED27F5E38D5B0A215F \
76
- 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
77
- 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \
78
- C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
79
- 108F52B48DB57BB0CC439B2997B01419BD92F80A \
80
- A363A499291CBBC940DD62E41F10027AF002F8B0 \
81
- ; do \
82
- gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
83
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
84
- done \
85
- && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
86
- && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
87
- && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
88
- && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
89
- && tar -xf "node-v$NODE_VERSION.tar.xz" \
90
- && cd "node-v$NODE_VERSION" \
91
- && ./configure \
92
- && make -j$(getconf _NPROCESSORS_ONLN) V= \
93
- && make install \
94
- && apk del .build-deps-full \
95
- && cd .. \
96
- && rm -Rf "node-v$NODE_VERSION" \
97
- && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
98
- fi \
99
- && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
100
- && apk del .build-deps \
101
- # smoke tests
102
- && node --version \
103
- && npm --version
104
37
105
- ENV YARN_VERSION=1.22.19
38
+ FROM build AS collectstatic
39
+ RUN apk add nodejs npm
40
+ RUN npm install -g yarn --force
106
41
107
- RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
108
- && for key in \
109
- 6A010C5166006599AA17F08146C2130DFD2497F5 \
110
- ; do \
111
- gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
112
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
113
- done \
114
- && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
115
- && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
116
- && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
117
- && mkdir -p /opt \
118
- && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
119
- && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
120
- && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
121
- && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
122
- && apk del .build-deps-yarn \
123
- # smoke test
124
- && yarn --version
125
42
126
43
# installing DefectDojo packages
127
44
RUN pip3 install \
0 commit comments