otterscan/Dockerfile

41 lines
1.4 KiB
Docker

# syntax=docker/dockerfile-upstream:master-labs
FROM node:16.16.0-alpine3.15 AS builder
RUN apk add git subversion rsync
WORKDIR /otterscan-build
COPY ["package.json", "package-lock.json", "/otterscan-build/"]
RUN npm install
COPY ["tsconfig.json", "tsconfig.node.json", "postcss.config.js", "tailwind.config.js", "vite.config.ts", "index.html", "/otterscan-build/"]
COPY ["public", "/otterscan-build/public/"]
COPY ["src", "/otterscan-build/src/"]
RUN npm run fullbuild
FROM alpine:3.15.0 AS logobuilder
RUN apk add imagemagick parallel subversion git
WORKDIR /
ADD https://github.com/trustwallet/assets.git /trustwallet
RUN mkdir -p /assets/
RUN mv /trustwallet/blockchains/ethereum/assets /assets/1/
RUN mv /trustwallet/blockchains/polygon/assets /assets/137/
RUN mv /trustwallet/blockchains/smartchain/assets /assets/56/
RUN find . -name logo.png | parallel magick convert {} -filter Lanczos -resize 32x32 {}; exit 0
# Add brotli module to official nginx image
# Based on: https://github.com/nginxinc/docker-nginx/tree/master/modules
FROM golang:1.19-alpine as gobuilder
RUN apk add alpine-sdk
WORKDIR /wd
COPY ["go.mod","go.sum","/wd/"]
COPY cmd cmd
RUN go build -o otter ./cmd/otter
FROM alpine:3.15.0
RUN apk add alpine-sdk
WORKDIR /wd
COPY --from=gobuilder /wd/otter /usr/bin/otter
COPY --from=builder /otterscan-build/dist /wd/dist
COPY --from=logobuilder /assets /wd/dist
CMD ["server"]