this repo has no description
at main 1.5 kB view raw
1# Base builder 2FROM golang:1.21-alpine AS base 3WORKDIR /app 4RUN apk add --no-cache gcc musl-dev 5COPY go.mod go.sum ./ 6RUN go mod download 7COPY db/crsqlite.so ./db/ 8 9# Frontend builder 10FROM node:18-alpine AS frontend-builder 11WORKDIR /app 12COPY ./mast-react-vite/package.json ./mast-react-vite/package-lock.json ./ 13RUN npm install 14COPY ./mast-react-vite/src ./src 15COPY ./mast-react-vite/public ./public 16COPY ./mast-react-vite/index.html ./ 17COPY ./mast-react-vite/*.config.js ./mast-react-vite/*.config.ts ./ 18RUN npm run build 19 20# Server builder 21FROM base AS server-builder 22WORKDIR /app 23COPY server/main.go server/auth.go server/auth.db server/test.go ./server/ 24RUN CGO_ENABLED=1 go build -o /app/bin/server ./server/main.go ./server/auth.go 25 26# Frontend stage 27FROM nginx:alpine AS frontend 28COPY --from=frontend-builder /app/dist /usr/share/nginx/html 29RUN mkdir -p /usr/share/nginx/html/db 30COPY --from=base /app/db/crsqlite.so /usr/share/nginx/html/db/crsqlite.so 31EXPOSE 80 32CMD ["nginx", "-g", "daemon off;"] 33 34# Server stage 35FROM alpine:latest AS server 36WORKDIR /app 37RUN apk upgrade --no-cache 38RUN apk add --no-cache ca-certificates 39RUN apk add --no-cache libgcc 40# We need ../db/crsqlite.so because of silly relative imports in this container... 41COPY --from=server-builder /app/bin/server /app/bin/server 42COPY --from=base /app/db/ /app/db/ 43COPY --from=base /app/db/crsqlite.so /usr/share/nginx/html/db/crsqlite.so 44RUN mkdir -p /app/rooms 45EXPOSE 8080 46WORKDIR /app/bin/ 47CMD ["/app/bin/server"]