51 lines
1 KiB
Docker
51 lines
1 KiB
Docker
ARG GOLANG_VERSION
|
|
ARG NODE_VERSION
|
|
ARG ALPINE_VERSION
|
|
FROM golang:${GOLANG_VERSION}-alpine AS goBuilder
|
|
RUN apk add cmake g++ gcc
|
|
WORKDIR /app
|
|
|
|
COPY ./scripts/swagger.sh .
|
|
RUN ./swagger.sh install
|
|
|
|
COPY ./go.mod .
|
|
COPY ./go.sum .
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
RUN ./swagger.sh init
|
|
RUN go build -ldflags="-s -w"
|
|
|
|
FROM node:${NODE_VERSION}-alpine AS nodeBuilder
|
|
WORKDIR /app
|
|
|
|
COPY ./frontend/package.json .
|
|
COPY ./frontend/yarn.lock .
|
|
RUN yarn install --frozen-lockfile
|
|
|
|
COPY --from=goBuilder /app/docs/swagger.json ../docs/swagger.json
|
|
COPY ./frontend/ .
|
|
RUN yarn run types:openapi
|
|
RUN yarn run build
|
|
|
|
FROM alpine:${ALPINE_VERSION} AS logo
|
|
RUN apk add figlet
|
|
RUN figlet Cafe > logo.txt
|
|
|
|
FROM alpine:${ALPINE_VERSION} AS final
|
|
RUN apk add tzdata
|
|
|
|
WORKDIR /app
|
|
COPY ./scripts/entrypoint.sh .
|
|
|
|
COPY --from=logo /logo.txt .
|
|
COPY --from=nodeBuilder /app/dist/ ./templates/
|
|
COPY --from=goBuilder /app/cafe .
|
|
COPY config.toml .
|
|
|
|
ARG VERSION
|
|
ENV VERSION=$VERSION
|
|
ARG BUILD_TIME
|
|
ENV BUILD_TIME=$BUILD_TIME
|
|
|
|
ENTRYPOINT ["/app/entrypoint.sh"]
|