This repository has been archived by the owner on Oct 3, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
75 lines (53 loc) · 2.01 KB
/
Dockerfile
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
# Reference: https://nextjs.org/docs/deployment#docker-image
#
# builder
#
FROM docker.io/library/node:16.13.0-alpine3.14 AS builder
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
WORKDIR /app
COPY next.js .
RUN apk add --no-cache libc6-compat && \
npm ci && \
NEXT_TELEMETRY_DISABLED=1 npm run build
#
# dependencies
#
FROM docker.io/library/node:16.13.0-alpine3.14 AS dependencies
WORKDIR /app
ADD https://gobinaries.com/tj/node-prune /usr/local/bin/
COPY next.js/package.json next.js/package-lock.json ./
RUN npm ci --only=production && \
chmod +x /usr/local/bin/node-prune && \
node-prune
#
# runner
#
FROM docker.io/library/node:16.13.0-alpine3.14 AS runner
COPY entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
# Download, extract and install oauth2-proxy
ARG OAUTH2_PROXY_VERSION=7.2.0
ADD https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v$OAUTH2_PROXY_VERSION/oauth2-proxy-v$OAUTH2_PROXY_VERSION.linux-amd64.tar.gz /tmp/oauth2-proxy-v$OAUTH2_PROXY_VERSION.linux-amd64.tar.gz
RUN tar -xf /tmp/oauth2-proxy-v$OAUTH2_PROXY_VERSION.linux-amd64.tar.gz -C /tmp && \
cp /tmp/oauth2-proxy-v$OAUTH2_PROXY_VERSION.linux-amd64/oauth2-proxy /usr/local/bin
COPY oauth2-proxy.cfg /etc/oauth2-proxy.cfg
# Environmental variables for oauth2-proxy
ENV OAUTH2_PROXY_CLIENT_ID=
ENV OAUTH2_PROXY_CLIENT_SECRET=
ENV OAUTH2_PROXY_COOKIE_SECRET=
# Move built Next.js from builder step to runner
COPY --chown=node:node --from=builder /app/next.config.js ./
COPY --chown=node:node --from=builder /app/.next /app/.next
COPY --chown=node:node --from=dependencies /app/node_modules /app/node_modules
COPY --chown=node:node --from=builder /app/package.json /app/package.json
# Environmental variables for Next.js
ENV AWS_ACCESS_KEY_ID=
ENV AWS_SECRET_ACCESS_KEY=
ENV CSRF_SECRET=
USER node
EXPOSE 8080/tcp
# We must use a separated shell script in order to support environmental
# variables and optional command line parameters (see
# https://stackoverflow.com/a/49156417/3942401)
ENTRYPOINT ["./entrypoint.sh"]