From 568ec4b66d752ffc091e1a4843e1999f17060082 Mon Sep 17 00:00:00 2001 From: Geens Date: Sun, 20 Apr 2025 16:06:47 +0200 Subject: [PATCH] Improved docker build speed --- Dockerfile | 31 ++++++++++++++----------- lib/xml_schema_validator/pyproject.toml | 4 +++- scripts/bootstrap.sh | 2 +- scripts/install.sh | 26 +++++++++++++-------- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/Dockerfile b/Dockerfile index e8e55fc..4c95bb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,14 +2,15 @@ FROM nvidia/cuda:12.2.0-runtime-ubuntu22.04 AS base RUN apt-get update && \ apt-get upgrade -y && \ apt install -y \ - python3-pip \ + curl \ git \ - jq \ - python3-venv \ - wget \ gnupg \ + jq \ + python3-pip \ + python3-venv \ + tmux \ vim \ - curl + wget RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list @@ -56,22 +57,26 @@ RUN rm -rf *.egg-info/ FROM base AS sia-env RUN python3 -m venv /root/venvs/sia COPY ./setup.py /root/sia/setup.py -COPY ./lib /root/sia/lib RUN /root/venvs/sia/bin/python /root/sia/setup.py egg_info +RUN sed -i '/\/root\/sia\/lib/d' *.egg-info/requires.txt RUN --mount=type=cache,target=/root/.cache/pip \ /root/venvs/sia/bin/pip install -r *.egg-info/requires.txt RUN rm -rf *.egg-info/ -COPY action_schema.xsd /root/sia/action_schema.xsd -RUN mkdir -p /root/sia/lib/xml_schema_validator/src/ - -RUN --mount=type=cache,target=/root/.cache/pip \ - /root/venvs/sia/bin/pip install -e /root/sia/ - # Web frontend build +FROM base +# AS web-build +ENV NODE_VERSION=16.13.0 +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash +ENV NVM_DIR=/root/.nvm +RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION} +RUN . "$NVM_DIR/nvm.sh" && nvm use v${NODE_VERSION} +RUN . "$NVM_DIR/nvm.sh" && nvm alias default v${NODE_VERSION} +ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}" + FROM node:20-alpine AS web-build WORKDIR /app -COPY web/package*.json ./ +COPY web/package.json ./ RUN npm install RUN rm -rf /root/.npm/_cacache COPY web . diff --git a/lib/xml_schema_validator/pyproject.toml b/lib/xml_schema_validator/pyproject.toml index a64b84b..8ba540b 100644 --- a/lib/xml_schema_validator/pyproject.toml +++ b/lib/xml_schema_validator/pyproject.toml @@ -4,9 +4,11 @@ version = "0.1.0" description = "XML Schema validation library" requires-python = ">=3.10" dependencies = [ - "pytest>=8", "maturin>=1.0,<2.0", ] +optional-dependencies.dev = [ + "pytest>=8", +] [build-system] requires = ["maturin>=1.0,<2.0"] diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 197fda5..e65c321 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -56,7 +56,7 @@ fi if ! command -v node &> /dev/null; then echo "Installing Node.js..." curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash - export NVM_DIR="$HOME/.nvm" + export NVM_DIR="/root/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm install node fi diff --git a/scripts/install.sh b/scripts/install.sh index ecff201..1e75ba7 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,14 +1,20 @@ #!/bin/bash -echo "Installing ITB tool..." -python3 -m venv /root/venvs/itb -/root/venvs/itb/bin/pip install -e /root/sia/tools/itb +if [ -z "${SIA_INSTALL_NO_ITB}" ]; then + echo "Installing ITB tool..." + python3 -m venv /root/venvs/itb + /root/venvs/itb/bin/pip install -e /root/sia/tools/itb +fi -echo "Installing Train tool..." -python3 -m venv /root/venvs/train -/root/venvs/train/bin/pip install -e /root/sia/tools/train -/root/venvs/train/bin/ipython kernel install --name=train +if [ -z "${SIA_INSTALL_NO_TRAIN}" ]; then + echo "Installing Train tool..." + python3 -m venv /root/venvs/train + /root/venvs/train/bin/pip install -e /root/sia/tools/train + /root/venvs/train/bin/ipython kernel install --name=train +fi -echo "Installing SIA core..." -python3 -m venv /root/venvs/sia -/root/venvs/sia/bin/pip install -e /root/sia \ No newline at end of file +if [ -z "${SIA_INSTALL_NO_CORE}" ]; then + echo "Installing SIA core..." + python3 -m venv /root/venvs/sia + /root/venvs/sia/bin/pip install -e /root/sia +fi \ No newline at end of file