FROM node:12.18.2-alpine AS frontend LABEL maintainer="Hunter Long (https://github.com/hunterlong)" ARG BUILDPLATFORM WORKDIR /statping COPY ./frontend/package.json . COPY ./frontend/yarn.lock . RUN yarn install --pure-lockfile --network-timeout 1000000 COPY ./frontend . RUN yarn build && yarn cache clean # Statping Golang BACKEND building from source # Creates "/go/bin/statping" and "/usr/local/bin/sass" for copying FROM golang:1.14-alpine AS backend LABEL maintainer="Hunter Long (https://github.com/hunterlong)" ARG VERSION ARG COMMIT ARG BUILDPLATFORM ARG TARGETARCH RUN apk add --update --no-cache libstdc++ gcc g++ make git autoconf \ libtool ca-certificates linux-headers wget curl jq && \ update-ca-certificates WORKDIR /root RUN git clone https://github.com/sass/sassc.git RUN . sassc/script/bootstrap && make -C sassc -j4 # sassc binary: /root/sassc/bin/sassc WORKDIR /go/src/github.com/statping/statping ADD go.mod go.sum ./ RUN go mod download ENV GO111MODULE on ENV CGO_ENABLED 1 RUN go get github.com/stretchr/testify/assert && \ go get github.com/stretchr/testify/require && \ go get github.com/GeertJohan/go.rice/rice && \ go get github.com/cortesi/modd/cmd/modd && \ go get github.com/crazy-max/xgo COPY . . COPY --from=frontend /statping/dist/ ./source/dist/ RUN make clean generate embed RUN go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION} -X main.COMMIT=${COMMIT}" -o statping --tags "netgo linux" ./cmd RUN chmod a+x statping && mv statping /go/bin/statping # /go/bin/statping - statping binary # /root/sassc/bin/sassc - sass binary # /statping - Vue frontend (from frontend)