Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
103 lines (70 loc) · 3.67 KB
/
Copy pathDockerfile
File metadata and controls
103 lines (70 loc) · 3.67 KB
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
97
98
99
100
101
102
103
# syntax=docker/dockerfile:1.7
# First stage. This stage is responsible for installing dependencies and building the application.
# The output of this stage is a built version of your Next.js app, which includes all the static assets and optimized files that will be served to users.
FROM node:22-alpine AS build
ARG RELEASE_TAG_NAME
ENV NEXT_PUBLIC_RELEASE_TAG_NAME=${RELEASE_TAG_NAME}
ARG NEXT_PUBLIC_SENTRY_DSN
ENV NEXT_PUBLIC_SENTRY_DSN=${NEXT_PUBLIC_SENTRY_DSN}
ARG SENTRY_PROJECT
ENV SENTRY_PROJECT=${SENTRY_PROJECT}
ARG SENTRY_ORG
ENV SENTRY_ORG=${SENTRY_ORG}
ARG NEXT_PUBLIC_CONNECT_AUTH_ORIGIN
ENV NEXT_PUBLIC_CONNECT_AUTH_ORIGIN=${NEXT_PUBLIC_CONNECT_AUTH_ORIGIN}
ARG NEXT_PUBLIC_MAINNET_API_SERVER
ENV NEXT_PUBLIC_MAINNET_API_SERVER=${NEXT_PUBLIC_MAINNET_API_SERVER}
ARG NEXT_PUBLIC_MAINNET_BTC_ADDRESS_BASE_URL
ENV NEXT_PUBLIC_MAINNET_BTC_ADDRESS_BASE_URL=${NEXT_PUBLIC_MAINNET_BTC_ADDRESS_BASE_URL}
ARG NEXT_PUBLIC_MAINNET_BTC_BLOCK_BASE_URL
ENV NEXT_PUBLIC_MAINNET_BTC_BLOCK_BASE_URL=${NEXT_PUBLIC_MAINNET_BTC_BLOCK_BASE_URL}
ARG NEXT_PUBLIC_MAINNET_BTC_TX_BASE_URL
ENV NEXT_PUBLIC_MAINNET_BTC_TX_BASE_URL=${NEXT_PUBLIC_MAINNET_BTC_TX_BASE_URL}
ARG NEXT_PUBLIC_TESTNET_API_SERVER
ENV NEXT_PUBLIC_TESTNET_API_SERVER=${NEXT_PUBLIC_TESTNET_API_SERVER}
ARG NEXT_PUBLIC_TESTNET_BTC_ADDRESS_BASE_URL
ENV NEXT_PUBLIC_TESTNET_BTC_ADDRESS_BASE_URL=${NEXT_PUBLIC_TESTNET_BTC_ADDRESS_BASE_URL}
ARG NEXT_PUBLIC_TESTNET_BTC_BLOCK_BASE_URL
ENV NEXT_PUBLIC_TESTNET_BTC_BLOCK_BASE_URL=${NEXT_PUBLIC_TESTNET_BTC_BLOCK_BASE_URL}
ARG NEXT_PUBLIC_TESTNET_BTC_TX_BASE_URL
ENV NEXT_PUBLIC_TESTNET_BTC_TX_BASE_URL=${NEXT_PUBLIC_TESTNET_BTC_TX_BASE_URL}
WORKDIR /app
COPY . .
RUN npm install -g pnpm@10
RUN pnpm i
RUN pnpm chakra typegen src/ui/theme/theme.ts
RUN --mount=type=secret,id=SENTRY_AUTH_TOKEN,required=false \
sh -c 'if [ -f /run/secrets/SENTRY_AUTH_TOKEN ]; then export SENTRY_AUTH_TOKEN="$(cat /run/secrets/SENTRY_AUTH_TOKEN)"; fi; NODE_OPTIONS="--max-old-space-size=4096" pnpm build'
# This stage creates the final Docker image that will be used in production. It only contains the necessary runtime environment and the built application files from the first stage.
FROM node:22-alpine
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
ARG RELEASE_TAG_NAME
ENV NEXT_PUBLIC_RELEASE_TAG_NAME=${RELEASE_TAG_NAME}
ARG NEXT_PUBLIC_SENTRY_DSN
ENV NEXT_PUBLIC_SENTRY_DSN=${NEXT_PUBLIC_SENTRY_DSN}
ARG NEXT_PUBLIC_CONNECT_AUTH_ORIGIN
ENV NEXT_PUBLIC_CONNECT_AUTH_ORIGIN=${NEXT_PUBLIC_CONNECT_AUTH_ORIGIN}
ARG NEXT_PUBLIC_MAINNET_API_SERVER
ENV NEXT_PUBLIC_MAINNET_API_SERVER=${NEXT_PUBLIC_MAINNET_API_SERVER}
ARG NEXT_PUBLIC_MAINNET_BTC_ADDRESS_BASE_URL
ENV NEXT_PUBLIC_MAINNET_BTC_ADDRESS_BASE_URL=${NEXT_PUBLIC_MAINNET_BTC_ADDRESS_BASE_URL}
ARG NEXT_PUBLIC_MAINNET_BTC_BLOCK_BASE_URL
ENV NEXT_PUBLIC_MAINNET_BTC_BLOCK_BASE_URL=${NEXT_PUBLIC_MAINNET_BTC_BLOCK_BASE_URL}
ARG NEXT_PUBLIC_MAINNET_BTC_TX_BASE_URL
ENV NEXT_PUBLIC_MAINNET_BTC_TX_BASE_URL=${NEXT_PUBLIC_MAINNET_BTC_TX_BASE_URL}
ARG NEXT_PUBLIC_TESTNET_API_SERVER
ENV NEXT_PUBLIC_TESTNET_API_SERVER=${NEXT_PUBLIC_TESTNET_API_SERVER}
ARG NEXT_PUBLIC_TESTNET_BTC_ADDRESS_BASE_URL
ENV NEXT_PUBLIC_TESTNET_BTC_ADDRESS_BASE_URL=${NEXT_PUBLIC_TESTNET_BTC_ADDRESS_BASE_URL}
ARG NEXT_PUBLIC_TESTNET_BTC_BLOCK_BASE_URL
ENV NEXT_PUBLIC_TESTNET_BTC_BLOCK_BASE_URL=${NEXT_PUBLIC_TESTNET_BTC_BLOCK_BASE_URL}
ARG NEXT_PUBLIC_TESTNET_BTC_TX_BASE_URL
ENV NEXT_PUBLIC_TESTNET_BTC_TX_BASE_URL=${NEXT_PUBLIC_TESTNET_BTC_TX_BASE_URL}
WORKDIR /app
COPY --from=build /app/next.config.js /app/next.config.js
COPY --from=build /app/public /app/public
COPY --from=build /app/.next/static /app/.next/static
COPY --from=build /app/.next/standalone /app
EXPOSE 3000
CMD [ "node", "server.js" ]