From 9113b58c6ab450c437c37fcf124393a0c16a976c Mon Sep 17 00:00:00 2001
From: merith-tk <merith@merith.xyz>
Date: Mon, 21 Apr 2025 18:02:55 +0100
Subject: [PATCH] Update Dockerfile

---
 Dockerfile | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index 05546cf..d8e3071 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1 +1,53 @@
-FROM alpine:3.12
\ No newline at end of file
+# Stage 1: Builder
+FROM node:18-bullseye-slim as builder
+
+RUN DEBIAN_FRONTEND=noninteractive \
+  && apt-get update \
+  && apt-get upgrade -yqq \
+  && apt-get install --no-install-recommends -y \
+    build-essential \
+    curl \
+    ca-certificates \
+    llvm-13 \
+    llvm-13-dev \
+    libclang-common-13-dev \
+    zlib1g-dev \
+    git \
+  && apt-get clean \
+  && rm -fr /var/lib/apt/lists/*
+
+ENV PATH="/usr/lib/llvm-13/bin/:${PATH}"
+
+# Install Rust
+RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y
+ENV PATH="/root/.cargo/bin:${PATH}"
+RUN rustup target add wasm32-unknown-unknown
+
+# NodeJS/NPM Dependencies
+RUN npx --package typescript tsc --init
+RUN npm install --global webpack
+RUN npm install --global webpack-cli
+RUN npm install @msgpack/msgpack
+RUN npm install bs58
+
+# Clone and build freenet-core
+WORKDIR /src
+RUN git clone https://github.com/freenet/freenet-core.git freenet
+WORKDIR /src/freenet/crates/core
+RUN cargo install --path .
+
+# Stage 2: Runner
+FROM debian:bullseye-slim
+
+RUN DEBIAN_FRONTEND=noninteractive \
+  && apt-get update \
+  && apt-get upgrade -yqq \
+  && apt-get install --no-install-recommends -y \
+    ca-certificates \
+  && apt-get clean \
+  && rm -fr /var/lib/apt/lists/*
+
+# Copy the built binary from the builder stage
+COPY --from=builder /root/.cargo/bin/freenet /usr/local/bin/freenet
+
+CMD ["freenet", "-b", "0.0.0.0"]
\ No newline at end of file