# ADMIN DASHBOARD BUILD
FROM node:lts-alpine as build-client

WORKDIR /build/client

RUN apk add --no-cache make

COPY . /build/
RUN npm install \
    && npm run build \
    && mkdir -p /build/.bin/static \
    && cp -R ./public /build/.bin/static

# DNS/API SERVER BUILD
FROM golang:alpine as build-server

WORKDIR /build/

RUN apk add --no-cache --update make gcc musl-dev

COPY --from=build-client /build /build
RUN make .bin/gopherhole

# RUNTIME ENVIRONMENT
FROM alpine

WORKDIR /opt

RUN apk add --no-cache ca-certificates

RUN addgroup gopherhole \
    && adduser -H -D gopherhole gopherhole \
    && mkdir -p /data \
    && chown -R gopherhole /data

COPY --chown=gopherhole:gopherhole --from=build-server /build/.bin/gopherhole /opt/gopherhole

USER gopherhole

EXPOSE 53/udp 53/tcp 80/tcp

VOLUME "/data"

ENTRYPOINT /opt/gopherhole
