49 lines
1.4 KiB
Docker
49 lines
1.4 KiB
Docker
FROM oven/bun:debian AS frontend-dependency-installer
|
|
WORKDIR /usr/src/warren
|
|
|
|
COPY frontend/package.json frontend/bun.lock ./
|
|
RUN bun install --frozen-lockfile --ignore-scripts
|
|
|
|
|
|
FROM node:bookworm AS frontend-builder
|
|
WORKDIR /usr/src/warren
|
|
|
|
COPY --from=frontend-dependency-installer /usr/src/warren/ .
|
|
COPY frontend/ ./
|
|
RUN npm run generate
|
|
|
|
|
|
FROM alpine:3 AS sqlite-extension-compiler
|
|
WORKDIR /var/lib/warren
|
|
|
|
RUN apk add sqlite-libs sqlite-dev build-base
|
|
COPY backend/sqlite_extensions sqlite_extensions
|
|
RUN gcc -g -fPIC -shared sqlite_extensions/uuid.c -o sqlite_extensions/uuid
|
|
|
|
|
|
FROM rust:alpine AS backend-builder
|
|
WORKDIR /usr/src/warren
|
|
|
|
RUN apk add sqlite sqlite-dev build-base
|
|
|
|
COPY backend/Cargo.toml backend/Cargo.lock ./
|
|
RUN mkdir -p src/bin/backend && mkdir src/lib && echo "fn main() {}" > src/bin/backend/main.rs && echo "" > src/lib/lib.rs
|
|
RUN apk add --no-cache pkgconfig openssl openssl-dev libc-dev openssl-libs-static
|
|
RUN cargo build --release
|
|
COPY backend/ .
|
|
RUN touch src/bin/backend/main.rs && touch src/lib/lib.rs
|
|
RUN cargo build --release
|
|
|
|
|
|
FROM alpine:3
|
|
WORKDIR /var/lib/warren
|
|
|
|
COPY --from=sqlite-extension-compiler /var/lib/warren/sqlite_extensions/uuid /var/lib/warren/sqlite_extensions/uuid
|
|
|
|
COPY --from=backend-builder /usr/src/warren/target/release/warren_backend /usr/bin/warren
|
|
COPY --from=frontend-builder /usr/src/warren/dist ./frontend
|
|
|
|
ENV STATIC_FRONTEND_DIRECTORY "./frontend"
|
|
|
|
ENTRYPOINT ["warren"]
|