builds a network of nodes
This commit is contained in:
73
Dockerfile
Normal file
73
Dockerfile
Normal file
@@ -0,0 +1,73 @@
|
||||
# Multistage Dockerfile for gsio-node
|
||||
|
||||
# Build stage
|
||||
FROM rust:slim as builder
|
||||
|
||||
# Install build dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
build-essential \
|
||||
git \
|
||||
ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Create a new empty project
|
||||
WORKDIR /app
|
||||
|
||||
COPY Cargo.toml Cargo.lock ./
|
||||
COPY crates/gsio-node/Cargo.toml ./crates/gsio-node/
|
||||
COPY crates/gsio-relay/Cargo.toml ./crates/gsio-relay/
|
||||
COPY crates/gsio-client/Cargo.toml ./crates/gsio-client/
|
||||
COPY crates/gsio-wallet/Cargo.toml ./crates/gsio-wallet/
|
||||
|
||||
# Create dummy source files to build dependencies
|
||||
RUN mkdir -p crates/gsio-node/src && \
|
||||
echo 'fn main() { println!("Dummy!"); }' > crates/gsio-node/src/main.rs && \
|
||||
mkdir -p crates/gsio-relay/src && \
|
||||
echo 'fn main() { println!("Dummy!"); }' > crates/gsio-relay/src/lib.rs && \
|
||||
mkdir -p crates/gsio-client/src && \
|
||||
echo 'fn main() { println!("Dummy!"); }' > crates/gsio-client/src/main.rs && \
|
||||
mkdir -p crates/gsio-wallet/src && \
|
||||
echo 'pub fn dummy() {}' > crates/gsio-wallet/src/lib.rs
|
||||
|
||||
# Create dummy source files to build dependencies
|
||||
|
||||
|
||||
# Build dependencies - this will be cached if dependencies don't change
|
||||
RUN cargo build --release --bin gsio-node
|
||||
|
||||
# Remove the dummy source files
|
||||
RUN rm -rf crates/*/src
|
||||
|
||||
# Copy the actual source code
|
||||
COPY crates ./crates
|
||||
|
||||
# Build the application
|
||||
RUN cargo build --release --bin gsio-node
|
||||
|
||||
# Runtime stage
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
# Install runtime dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
libssl3 \
|
||||
wget \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Create a non-root user to run the application
|
||||
RUN useradd -m appuser
|
||||
USER appuser
|
||||
WORKDIR /home/appuser
|
||||
|
||||
# Copy the binary from the builder stage
|
||||
COPY --from=builder --chown=appuser:appuser /app/target/release/gsio-node .
|
||||
|
||||
# Expose the port the app runs on
|
||||
EXPOSE 3000
|
||||
|
||||
# Command to run the application
|
||||
CMD ["./gsio-node"]
|
Reference in New Issue
Block a user