diff --git a/Dockerfile b/Dockerfile index f008b07..c0eaf2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,16 +5,20 @@ COPY frontend/ . RUN npm install RUN npm run build -# Stage 2: Build the Rust backend +# Stage 2: Build the Rust backend (statically linked) FROM rust:1.83 as backend-builder WORKDIR /app/backend COPY backend/ . -RUN cargo build --release +# Add the musl target for static linking +RUN rustup target add x86_64-unknown-linux-musl +# Build the binary with musl +RUN cargo build --release --target x86_64-unknown-linux-musl -# Final Stage: Combine frontend and backend +# Final Stage FROM debian:bullseye-slim WORKDIR /app -COPY --from=frontend-builder /app/frontend/build ./frontend/dist -COPY --from=backend-builder /app/backend/target/release/formies_be ./formies_be +COPY --from=frontend-builder /app/frontend/build ./frontend/build +# Copy the statically linked binary +COPY --from=backend-builder /app/backend/target/x86_64-unknown-linux-musl/release/formies_be ./formies_be EXPOSE 8080 -CMD ["./backend"] +CMD ["./formies_be"] \ No newline at end of file diff --git a/backend/src/main.rs b/backend/src/main.rs index 2870335..462f289 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -24,7 +24,7 @@ async fn main() -> std::io::Result<()> { .allow_any_method(), ) .app_data(web::Data::new(db.clone())) - .service(fs::Files::new("/", "./frontend/dist").index_file("index.html")) + .service(fs::Files::new("/", "frontend/build").index_file("index.html")) .route("/login", web::post().to(handlers::login)) // Public: Login .route( "/forms/{id}/submissions", @@ -37,7 +37,7 @@ async fn main() -> std::io::Result<()> { web::get().to(handlers::get_submissions), // Protected ) }) - .bind("127.0.0.1:8080")? + .bind("0.0.0.0:8080")? .run() .await }