FROM golang:1.25-alpine AS builder WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -o server ./cmd/server FROM alpine:3.19 RUN apk --no-cache add ca-certificates tzdata su-exec RUN addgroup -S app && adduser -S app -G app WORKDIR /app COPY --from=builder /app/server . COPY --from=builder /app/migrations ./migrations COPY docker-entrypoint.sh /docker-entrypoint.sh RUN mkdir -p /app/storage && chown -R app:app /app && chmod +x /docker-entrypoint.sh EXPOSE 8080 ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["./server"]