Docker images for building nextgraph-rs #25
Merged
niko
merged 1 commits from chore/add-docker-images
into master
6 months ago
@ -0,0 +1,36 @@ |
|||||||
|
# Use rust's latest alpine image as base image. |
||||||
|
FROM rust:alpine |
||||||
|
|
||||||
|
ENV LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH |
||||||
|
|
||||||
|
RUN apk add git nodejs npm llvm-static llvm-dev clang-static clang-dev openssl openssl-dev perl gtk+3.0-dev webkit2gtk-dev librsvg-dev curl wget pkgconf eudev-dev build-base zlib-static bzip2-static build-base ncursers-static && \ |
||||||
|
# Install Rust and Node.js tools |
||||||
|
cargo install cargo-watch && \ |
||||||
|
cargo install wasm-pack --git https://github.com/rustwasm/wasm-pack.git --rev c2b663f25abe50631a236d57a8c6d7fd806413b2 && \ |
||||||
|
cargo install tauri-cli --version "2.0.0-alpha.11" --locked && \ |
||||||
|
npm install -g pnpm |
||||||
|
|
||||||
|
# Clone the nextgraph-rs repository |
||||||
|
RUN git clone https://git.nextgraph.org/NextGraph/nextgraph-rs.git && \ |
||||||
|
cd /nextgraph-rs/ng-sdk-js && \ |
||||||
|
wasm-pack build --target bundler && npm install --no-save pkg && |
||||||
|
# Build ng-app web version |
||||||
|
cd /nextgraph-rs/ng-app && pnpm install && pnpm webfilebuild |
||||||
|
|
||||||
|
# From here the build fails due to llvm / clang linking issues... |
||||||
|
# |
||||||
|
# WORKDIR /nextgraph-rs |
||||||
|
## Build the nextgraph-rs project and its subprojects |
||||||
|
# RUN cd /nextgraph-rs && git pull && cargo update -p ng-rocksdb && \ |
||||||
|
# cargo build -r && \ |
||||||
|
# cargo build -r -p ngd && \ |
||||||
|
# cargo build -r -p ngcli |
||||||
|
|
||||||
|
# TODO: Build the platform-specific ng-app versions |
||||||
|
# cd /nextgraph-rs/ng-app && cargo tauri build --target x86_64-unknown-linux-gnu |
||||||
|
# ... |
||||||
|
|
||||||
|
# TODO: To remove the image size, remove ~/.cargo, ~/.rustup, and the build dependencies |
||||||
|
|
||||||
|
# To build the image, run: |
||||||
|
# docker build -t nextgraph-rs:alpine -f docker/Dockerfile.alpine . |
@ -0,0 +1,46 @@ |
|||||||
|
# Use fedora:40 as base image |
||||||
|
FROM fedora:40 |
||||||
|
|
||||||
|
# Set the environment variable to ensure cargo is available in the PATH |
||||||
|
ENV PATH="/root/.cargo/bin:${PATH}" |
||||||
|
SHELL ["/bin/bash", "-c"] |
||||||
|
|
||||||
|
# Install the required packages and Rust |
||||||
|
|
||||||
|
RUN dnf install -y git clang-devel webkit2gtk4.1-devel openssl openssl-devel curl wget file libappindicator-gtk3-devel librsvg2-devel perl && \ |
||||||
|
dnf group install -y "C Development Tools and Libraries" && \ |
||||||
|
# Rust |
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y && \ |
||||||
|
# Node.js |
||||||
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && \ |
||||||
|
export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" && \ |
||||||
|
nvm install 22 && \ |
||||||
|
npm install -g pnpm && \ |
||||||
|
# Clear Cache |
||||||
|
rm -rf /var/cache/dnf && \ |
||||||
|
# Install Rust and Node.js tools |
||||||
|
cargo install cargo-watch && \ |
||||||
|
cargo install wasm-pack --git https://github.com/rustwasm/wasm-pack.git --rev c2b663f25abe50631a236d57a8c6d7fd806413b2 && \ |
||||||
|
cargo install tauri-cli --version "2.0.0-alpha.11" --locked && \ |
||||||
|
# Clone the nextgraph-rs repository (TODO: It might be better to put this into a seperate RUN command to avoid rebuilding the image if the repository changes) |
||||||
|
git clone https://git.nextgraph.org/NextGraph/nextgraph-rs.git && \ |
||||||
|
# Build sdk and ng-app web version |
||||||
|
cd /nextgraph-rs/ng-sdk-js && wasm-pack build --target bundler && npm install --no-save pkg && \ |
||||||
|
cd /nextgraph-rs/ng-app && pnpm install && pnpm webfilebuild |
||||||
|
|
||||||
|
# Build the nextgraph-rs project |
||||||
|
RUN export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" && \ |
||||||
|
cd /nextgraph-rs && git pull && cargo update -p ng-rocksdb && \ |
||||||
|
cargo build -r && \ |
||||||
|
cargo build -r -p ngd && \ |
||||||
|
cargo build -r -p ngcli |
||||||
|
|
||||||
|
|
||||||
|
# TODO: Build the platform-specific ng-app versions |
||||||
|
# cd /nextgraph-rs/ng-app && cargo tauri build --target x86_64-unknown-linux-gnu |
||||||
|
# ... |
||||||
|
|
||||||
|
# TODO: To remove the image size, remove ~/.cargo, ~/.rustup, and the build dependencies |
||||||
|
|
||||||
|
# To build the image, run: |
||||||
|
# docker build -t nextgraph-rs:fedora -f docker/Dockerfile.fedora . |
@ -0,0 +1,47 @@ |
|||||||
|
# Use ubuntu 22.04 as base image |
||||||
|
FROM ubuntu:22.04 |
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-c"] |
||||||
|
|
||||||
|
# Set the environment variable to ensure cargo is available in the PATH |
||||||
|
ENV PATH="/root/.cargo/bin:${PATH}" |
||||||
|
|
||||||
|
# Install the required packages and Rust |
||||||
|
RUN apt update && \ |
||||||
|
apt upgrade -y && \ |
||||||
|
apt install -y git llvm-dev libclang-dev clang libssl-dev perl libappindicator3-dev libwebkit2gtk-4.0-dev librsvg2-dev curl wget pkg-config libudev-dev build-essential && \ |
||||||
|
rm -rf /var/cache/apt && \ |
||||||
|
# Rust |
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \ |
||||||
|
# Node.js |
||||||
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && \ |
||||||
|
export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" && \ |
||||||
|
nvm install 22 && \ |
||||||
|
npm install -g pnpm && \ |
||||||
|
# Install Rust and Node.js tools |
||||||
|
cargo install cargo-watch && \ |
||||||
|
cargo install wasm-pack --git https://github.com/rustwasm/wasm-pack.git --rev c2b663f25abe50631a236d57a8c6d7fd806413b2 && \ |
||||||
|
cargo install tauri-cli --version "2.0.0-alpha.11" --locked && \ |
||||||
|
npm install -g pnpm && \ |
||||||
|
# Clone the nextgraph-rs repository (TODO: It might be better to put this into a seperate RUN command to avoid rebuilding the image if the repository changes) |
||||||
|
git clone https://git.nextgraph.org/NextGraph/nextgraph-rs.git && \ |
||||||
|
# Build sdk and ng-app web version |
||||||
|
cd /nextgraph-rs/ng-sdk-js && wasm-pack build --target bundler && npm install --no-save pkg && \ |
||||||
|
cd /nextgraph-rs/ng-app && \ |
||||||
|
pnpm install && pnpm webfilebuild |
||||||
|
|
||||||
|
# Build the nextgraph-rs project and its subprojects |
||||||
|
WORKDIR /nextgraph-rs |
||||||
|
RUN cargo build -r && \ |
||||||
|
cargo build -r -p ngd && \ |
||||||
|
cargo build -r -p ngcli |
||||||
|
|
||||||
|
|
||||||
|
# TODO: Build the platform-specific ng-app versions |
||||||
|
# WORKDIR /nextgraph-rs/ng-app |
||||||
|
# RUN cargo tauri build --target x86_64-unknown-linux-gnu |
||||||
|
|
||||||
|
# TODO: To remove the image size, remove ~/.cargo, ~/.rustup, and the build dependencies |
||||||
|
|
||||||
|
# To build the image, run: |
||||||
|
# docker build -t nextgraph-rs:ubuntu -f docker/Dockerfile.ubuntu . |
Loading…
Reference in new issue