cafe-plaetschwiesle/docker/Dockerfile
2023-07-04 23:09:41 +02:00

51 lines
1.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" cmd/cafe-plaetschwiesle/cafe-plaetschwiesle.go
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-plaetschwiesle .
COPY config.toml .
ARG VERSION
ENV VERSION=$VERSION
ARG BUILD_TIME
ENV BUILD_TIME=$BUILD_TIME
ENTRYPOINT ["/app/entrypoint.sh"]