ARG GO_VERSION=1 FROM golang:${GO_VERSION}-bookworm as builder # Install the templ CLI tool for Go RUN go install github.com/a-h/templ/cmd/templ@latest # Install the standalone Tailwind CSS CLI RUN curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 && \ chmod +x tailwindcss-linux-x64 && \ mv tailwindcss-linux-x64 /usr/local/bin/tailwindcss # Install the minify CLI tool RUN curl -L -o minify.tar.gz https://github.com/tdewolff/minify/releases/download/v2.24.0/minify_linux_amd64.tar.gz && \ tar -xzf minify.tar.gz && \ mv minify /usr/local/bin/minify && \ rm minify.tar.gz WORKDIR /usr/src/app COPY go.mod go.sum ./ RUN go mod download && go mod verify COPY . . RUN /go/bin/templ generate # Create the directory structure for static assets RUN mkdir -p ./static/files # Minify existing JS files (if any exist) RUN minify ./static/*.js -o ./static/files/ 2>/dev/null || true # Download frontend libraries into the static folder RUN curl -sLo ./static/files/htmx.min.js https://cdn.jsdelivr.net/npm/htmx.org@2.0.6/dist/htmx.min.js RUN curl -sLo ./static/files/lucide.min.js https://unpkg.com/lucide@0.525.0/dist/umd/lucide.min.js RUN curl -sLo ./static/files/alpinejs.min.js https://cdn.jsdelivr.net/npm/alpinejs@3.14.9/dist/cdn.min.js RUN tailwindcss -i ./input.css -o ./static/files/style.css --minify RUN go build -v -o /run-app ./cmd/server/main.go FROM debian:bookworm # Install ca-certificates for TLS and the sqlite3 CLI tool RUN apt-get update -y && \ apt-get install -y ca-certificates fuse3 sqlite3 && \ rm -rf /var/lib/apt/lists/* # Copy LiteFS binary and config COPY --from=flyio/litefs:0.5 /usr/local/bin/litefs /usr/local/bin/litefs COPY litefs.yml /etc/litefs.yml # Copy the compiled Go binary COPY --from=builder /run-app /usr/local/bin/ CMD ["litefs", "mount", "-config", "/etc/litefs.yml"]