From 6cd8a2edc1f9a634ba44970e34185a4f2e1dc031 Mon Sep 17 00:00:00 2001
From: Dmitry <b4tm4n@mail.ru>
Date: Wed, 2 Apr 2025 16:34:47 +0300
Subject: [PATCH] Dockerfile: separate backend/frontend build

---
 Dockerfile | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index b4a6bbc..fb35a77 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,12 +12,20 @@ FROM chef AS planner-peasyweb
 COPY . .
 RUN cargo chef prepare --recipe-path recipe.json
 
-FROM chef AS builder-peasyweb
+FROM chef AS builder-peasyweb-backend
 COPY --from=planner-peasyweb /app/recipe.json recipe.json
-RUN cargo chef cook --release --recipe-path recipe.json
-COPY . .
-ENV API_BASE_URL="/api/v1"
+RUN cargo chef cook --release -p peazyweb-backend --recipe-path recipe.json
+COPY Cargo.toml Cargo.lock ./
+COPY backend/ ./backend/
 RUN cargo build -p peazyweb-backend --release
+
+FROM chef AS builder-peasyweb-frontend
+ENV API_BASE_URL="/api/v1"
+COPY Cargo.toml Cargo.lock ./
+COPY frontend/ ./frontend/
+RUN mkdir ./backend && echo "[package]" > ./backend/Cargo.toml && \
+    echo name = "\"peazyweb-backend\"" >> ./backend/Cargo.toml && \
+    mkdir ./backend/src && echo "pub fn main() {}" > ./backend/src/main.rs
 WORKDIR /app/frontend
 RUN trunk build --release --public-url "/frontend"
 
@@ -29,8 +37,8 @@ RUN mkdir -p /app/frontend
 RUN mkdir /data
 WORKDIR /app
 COPY --from=builder-peazyrsa /usr/local/cargo/bin/peazyrsa /usr/local/bin/peazyrsa
-COPY --from=builder-peasyweb /app/target/release/peazyweb-backend /usr/local/bin/peazyweb-backend
-COPY --from=builder-peasyweb /app/frontend/dist/ /app/frontend
+COPY --from=builder-peasyweb-backend /app/target/release/peazyweb-backend /usr/local/bin/peazyweb-backend
+COPY --from=builder-peasyweb-frontend /app/frontend/dist/ /app/frontend
 
 VOLUME [ "/data" ]