-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
49 lines (37 loc) · 1.24 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
FROM node:lts-alpine as builder
LABEL maintainer="HcgRandon <[email protected]>"
# Install Doppler CLI
RUN wget -q -t3 'https://packages.doppler.com/public/cli/rsa.8004D9FF50437357.key' -O /etc/apk/keys/[email protected] && \
echo 'https://packages.doppler.com/public/cli/alpine/any-version/main' | tee -a /etc/apk/repositories && \
apk add doppler
# setup registry
ARG ORG_GITHUB_TOKEN
ARG DOPPLER_TOKEN
ARG DOPPLER_CONFIG
ARG DOPPLER_PROJECT
# copy source for build
COPY . /build
WORKDIR /build
# setup .npmrc
RUN echo "@dynogg:registry=https://npm.pkg.github.com" | tee -a .npmrc
RUN echo "//npm.pkg.github.com/:_authToken=${ORG_GITHUB_TOKEN}" | tee -a .npmrc
# install dependencies and build project
RUN npm install && \
doppler run -c $DOPPLER_CONFIG -p $DOPPLER_PROJECT -t $DOPPLER_TOKEN -- npm run build:prod
# prepare final image
FROM node:lts-alpine
# create user
RUN adduser -Sh /app dyno
# copy raw source & build from builder
COPY . /app
COPY --from=builder /build/.npmrc /app/.npmrc
COPY --from=builder /build/.next /app/.next
# fix perms
RUN chown -R dyno /app
# drop privileges
USER dyno
WORKDIR /app
# Install depends for prod
RUN npm install --omit=dev && \
npm cache clean --force
CMD ["npm", "run", "start:prod"]