FROM node:20.12.2-alpine as init

COPY init /init
COPY --from=ethereum/client-go:v1.13.14 /usr/local/bin/geth /usr/local/bin/

WORKDIR /init

RUN yarn &&\
    yarn build &&\
    node dist/index.js

FROM node:20.12.2-alpine as client
COPY client /client

WORKDIR /client

RUN yarn &&\
    yarn build

FROM node:20.12.2-alpine

COPY --from=init /geth /geth
COPY --from=client /client/dist /client
COPY --from=ethereum/client-go:v1.13.14 /usr/local/bin/geth /usr/local/bin/
COPY server /server

WORKDIR /server

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true

COPY entrypoint.sh /entrypoint.sh
COPY readflag /readflag

RUN apk update &&\
    apk add --no-cache chromium &&\
    yarn &&\
    yarn build &&\
    adduser --disabled-password --no-create-home --gecos "" --shell /bin/sh srv &&\
    chown -R srv:srv /server /geth &&\
    chmod -R 755 /server /geth &&\
    chmod 700 /entrypoint.sh &&\
    chmod 4755 /readflag &&\
    rm -rf /server/src /root/* /tmp/* /var/cache/apk/* 

CMD [ "/entrypoint.sh" ]