aboutsummaryrefslogtreecommitdiffstats
path: root/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile40
1 files changed, 40 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..89ba3fd
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,40 @@
+# Stage 1: Frontend Build
+FROM node:20-slim AS frontend-builder
+WORKDIR /app/frontend
+COPY frontend/package*.json ./
+RUN npm install
+COPY frontend/ ./
+RUN npm run build
+
+# Stage 2: Backend Build
+FROM golang:1.23-bullseye AS backend-builder
+RUN go install github.com/GeertJohan/go.rice/rice@latest
+
+WORKDIR /app
+COPY go.mod go.sum ./
+RUN go mod download
+
+COPY . .
+# Copy built frontend assets from Stage 1
+COPY --from=frontend-builder /app/frontend/dist ./frontend/dist
+
+# Embed assets and build the binary
+RUN rice -i ./web embed-go
+RUN go build -o neko .
+
+# Stage 3: Final Image
+FROM debian:bullseye-slim
+WORKDIR /app
+COPY --from=backend-builder /app/neko .
+COPY --from=backend-builder /app/static ./static
+
+# Ensure data directory exists
+RUN mkdir -p /app/data
+
+# Default environment variables
+ENV NEKO_PORT=8080
+ENV NEKO_DB=/app/data/neko.db
+
+EXPOSE 8080
+
+CMD ["./neko", "-s", "8080", "-d", "/app/data/neko.db"]