# Stage 1: Build frontend FROM node:18-alpine AS frontend-builder RUN apk add --no-cache git WORKDIR /app RUN git clone https://gitea.sanplex.xyz/Sansan/MusicFrontend.git WORKDIR /app/MusicFrontend RUN npm install RUN npm run build # Generate config.js with empty API_HOSTNAME (relative paths) RUN echo "window.__RUNTIME_CONFIG__ = { API_HOSTNAME: '' };" > dist/config.js # Stage 2: Build backend FROM golang:1.25-alpine as build_go RUN apk add --no-cache curl WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN go install github.com/a-h/templ/cmd/templ@latest RUN templ generate RUN go build -o main cmd/main.go # Stage 3: Final image FROM golang:1.25-alpine EXPOSE 8080 VOLUME /sorted VOLUME /characters COPY --from=build_go /app/main . COPY --from=frontend-builder /app/MusicFrontend/dist /frontend COPY ./songs/ ./songs/ ENV PORT 8080 ENV DB_HOST "" ENV DB_PORT "" ENV DB_USERNAME "" ENV DB_PASSWORD "" ENV DB_NAME "" ENV MUSIC_PATH "" ENV CHARACTERS_PATH "" CMD ./main