generated from oci/template
Fix builder to multistep for small size
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 1m53s
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 1m53s
This commit is contained in:
parent
9113b58c6a
commit
1ef69c170f
1 changed files with 30 additions and 43 deletions
69
Dockerfile
69
Dockerfile
|
@ -1,53 +1,40 @@
|
||||||
# Stage 1: Builder
|
# Stage 1: Builder
|
||||||
FROM node:18-bullseye-slim as builder
|
FROM rust:slim-bookworm AS builder
|
||||||
|
|
||||||
RUN DEBIAN_FRONTEND=noninteractive \
|
# Install system dependencies
|
||||||
&& apt-get update \
|
RUN apt-get update && \
|
||||||
&& apt-get upgrade -yqq \
|
apt-get install -y --no-install-recommends \
|
||||||
&& apt-get install --no-install-recommends -y \
|
|
||||||
build-essential \
|
|
||||||
curl \
|
|
||||||
ca-certificates \
|
|
||||||
llvm-13 \
|
|
||||||
llvm-13-dev \
|
|
||||||
libclang-common-13-dev \
|
|
||||||
zlib1g-dev \
|
|
||||||
git \
|
git \
|
||||||
&& apt-get clean \
|
clang \
|
||||||
&& rm -fr /var/lib/apt/lists/*
|
llvm \
|
||||||
|
libclang-dev \
|
||||||
|
libssl-dev \
|
||||||
|
pkg-config \
|
||||||
|
ca-certificates \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ENV PATH="/usr/lib/llvm-13/bin/:${PATH}"
|
# First clone without submodules
|
||||||
|
|
||||||
# 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
|
WORKDIR /src
|
||||||
RUN git clone https://github.com/freenet/freenet-core.git freenet
|
RUN git clone --depth 1 https://github.com/freenet/freenet-core.git freenet
|
||||||
|
|
||||||
|
# Change submodule URLs from SSH to HTTPS
|
||||||
|
WORKDIR /src/freenet
|
||||||
|
RUN sed -i 's|git@github.com:|https://github.com/|' .gitmodules && \
|
||||||
|
git submodule sync && \
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
|
# Build the core crate (correct package specification)
|
||||||
WORKDIR /src/freenet/crates/core
|
WORKDIR /src/freenet/crates/core
|
||||||
RUN cargo install --path .
|
RUN cargo build --release
|
||||||
|
|
||||||
# Stage 2: Runner
|
# Stage 2: Runner
|
||||||
FROM debian:bullseye-slim
|
FROM debian:bookworm-slim
|
||||||
|
RUN apt-get update && \
|
||||||
RUN DEBIAN_FRONTEND=noninteractive \
|
apt-get install -y --no-install-recommends \
|
||||||
&& apt-get update \
|
|
||||||
&& apt-get upgrade -yqq \
|
|
||||||
&& apt-get install --no-install-recommends -y \
|
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
&& apt-get clean \
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
&& rm -fr /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Copy the built binary from the builder stage
|
# Copy the compiled binary
|
||||||
COPY --from=builder /root/.cargo/bin/freenet /usr/local/bin/freenet
|
COPY --from=builder /src/freenet/target/release/freenet /usr/local/bin/freenet
|
||||||
|
|
||||||
CMD ["freenet", "-b", "0.0.0.0"]
|
CMD ["freenet", "-b", "0.0.0.0"]
|
Loading…
Reference in a new issue