forked from warden-protocol/wardenprotocol
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
116 lines (102 loc) · 4.41 KB
/
Dockerfile
File metadata and controls
116 lines (102 loc) · 4.41 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
104
105
106
107
108
109
110
111
112
113
114
115
116
# syntax=docker/dockerfile:1
FROM node:lts-alpine AS node-build-env
RUN apk add --no-cache python3 build-base
RUN npm install -g pnpm@9
## automated-orders libs
FROM node-build-env AS automated-orders-libs
USER node
WORKDIR /app
COPY --chown=node:node automated-orders/yarn.lock yarn.lock
COPY --chown=node:node automated-orders/package.json package.json
COPY --chown=node:node automated-orders/tsconfig.json tsconfig.json
COPY --chown=node:node automated-orders/packages/utils-library packages/utils-library
COPY --chown=node:node automated-orders/packages/aws-kms-signer packages/aws-kms-signer
COPY --chown=node:node automated-orders/packages/blockchain-library packages/blockchain-library
RUN yarn install --frozen-lockfile && \
yarn build:libs && \
rm -rf packages/*/src packages/*/node_modules packages/*/tsconfig*
## snap
FROM node-build-env AS snap-builder
WORKDIR /snap
COPY snap/package*.json ./
RUN npm config set fetch-retries 5 \
&& npm config set fetch-retry-mintimeout 20000 \
&& npm config set fetch-retry-maxtimeout 120000 \
&& npm config set fetch-timeout 600000 \
&& npm ci --prefer-offline --no-audit
COPY snap/ .
RUN npm run build
## spaceward
FROM node-build-env AS spaceward-builder
WORKDIR /wardenprotocol
RUN mkdir spaceward
COPY spaceward/package*.json spaceward/pnpm-lock.yaml spaceward/.npmrc spaceward/
RUN cd spaceward && pnpm install
COPY . .
ENV VITE_FAUCET_URL=%FAUCET_URL%
ENV VITE_WARDEN_RPC_URL=%WARDEN_RPC_URL%
ENV VITE_WARDEN_REST_URL=%WARDEN_REST_URL%
ENV VITE_WARDEN_EVM_URL=%WARDEN_EVM_URL%
ENV VITE_WARDEN_CHAIN_NAME=%WARDEN_CHAIN_NAME%
ENV VITE_WARDEN_COSMOSKIT_CHAIN_NAME=%WARDEN_COSMOSKIT_CHAIN_NAME%
ENV VITE_WARDEN_CHAIN_ID=%WARDEN_CHAIN_ID%
ENV VITE_WARDEN_EVM_CHAIN_ID=%WARDEN_EVM_CHAIN_ID%
ENV VITE_WARDEN_MAINTENANCE=%WARDEN_MAINTENANCE%
ENV VITE_WARDEN_SNAP_ORIGIN=%WARDEN_SNAP_ORIGIN%
ENV VITE_WARDEN_SNAP_VERSION=%WARDEN_SNAP_VERSION%
ENV VITE_WARDEN_ENVIRONMENT=%WARDEN_ENVIRONMENT%
ENV VITE_WARDEN_STORYBLOK_TOKEN=%WARDEN_STORYBLOK_TOKEN%
ENV VITE_WARDEN_ETHEREUM_ANALYZER_CONTRACT=%WARDEN_ETHEREUM_ANALYZER_CONTRACT%
ENV VITE_WARDEN_AMINO_ANALYZER_CONTRACT=%WARDEN_AMINO_ANALYZER_CONTRACT%
ENV NODE_OPTIONS="--max_old_space_size=6144"
RUN cd spaceward && pnpm run build
COPY --from=snap-builder /snap/snap.manifest.json /wardenprotocol/spaceward/dist
COPY --from=snap-builder /snap/images /wardenprotocol/spaceward/dist/images
COPY --from=snap-builder /snap/dist /wardenprotocol/spaceward/dist/dist
FROM nginx:stable-alpine AS spaceward
WORKDIR /var/www/app
EXPOSE 8080
COPY ./spaceward/entrypoint.sh /opt/entrypoint.sh
COPY ./spaceward/nginx.conf /etc/nginx/nginx.conf
COPY --from=spaceward-builder /wardenprotocol/spaceward/dist .
RUN touch /var/run/nginx.pid && \
chown -R 1000 /var/run/nginx.pid && \
chown -R 1000 /var/cache/nginx && \
chown -R 1000 /var/www/app && \
chown -R 1000 /etc/nginx/conf.d/ && \
install -o 1000 -g 1000 -d /var/log/nginx -d /var/run/nginx
USER 1000
ENTRYPOINT ["sh", "/opt/entrypoint.sh"]
CMD ["nginx-fe"]
## spaceward-relay
FROM node-build-env AS spaceward-relay
WORKDIR /wardenprotocol/spaceward
COPY --chown=nobody:nogroup spaceward/ ./
COPY --chown=nobody:nogroup --from=wardenjs-builder /wardenjs /wardenprotocol/wardenjs
RUN pnpm install
USER nobody
ENTRYPOINT ["pnpm", "relay"]
FROM node-build-env AS automated-orders-scheduler
USER node
WORKDIR /app
COPY --chown=node:node automated-orders/yarn.lock yarn.lock
COPY --chown=node:node automated-orders/package.json package.json
COPY --chown=node:node automated-orders/tsconfig.json tsconfig.json
COPY --chown=node:node automated-orders/packages/scheduler packages/scheduler
COPY --chown=node:node --from=automated-orders-libs ["/app/packages", "./packages"]
RUN yarn install --frozen-lockfile && \
yarn build:scheduler && \
rm -rf packages/*/src packages/*/node_modules packages/*/tsconfig*
CMD ["yarn", "scheduler"]
FROM node-build-env AS automated-orders-relayer
USER node
WORKDIR /app
COPY --chown=node:node automated-orders/yarn.lock yarn.lock
COPY --chown=node:node automated-orders/package.json package.json
COPY --chown=node:node automated-orders/tsconfig.json tsconfig.json
COPY --chown=node:node automated-orders/packages/relayer packages/relayer
COPY --chown=node:node --from=automated-orders-libs ["/app/packages", "./packages"]
RUN yarn install --frozen-lockfile && \
yarn build:relayer && \
rm -rf packages/*/src packages/*/node_modules packages/*/tsconfig*
CMD ["yarn", "relayer"]