Improved docker build speed

This commit is contained in:
2025-04-20 16:06:47 +02:00
parent def822d61f
commit 568ec4b66d
4 changed files with 38 additions and 25 deletions

View File

@@ -2,14 +2,15 @@ FROM nvidia/cuda:12.2.0-runtime-ubuntu22.04 AS base
RUN apt-get update && \ RUN apt-get update && \
apt-get upgrade -y && \ apt-get upgrade -y && \
apt install -y \ apt install -y \
python3-pip \ curl \
git \ git \
jq \
python3-venv \
wget \
gnupg \ gnupg \
jq \
python3-pip \
python3-venv \
tmux \
vim \ vim \
curl wget
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 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 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 FROM base AS sia-env
RUN python3 -m venv /root/venvs/sia RUN python3 -m venv /root/venvs/sia
COPY ./setup.py /root/sia/setup.py 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 /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 \ RUN --mount=type=cache,target=/root/.cache/pip \
/root/venvs/sia/bin/pip install -r *.egg-info/requires.txt /root/venvs/sia/bin/pip install -r *.egg-info/requires.txt
RUN rm -rf *.egg-info/ 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 # 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 FROM node:20-alpine AS web-build
WORKDIR /app WORKDIR /app
COPY web/package*.json ./ COPY web/package.json ./
RUN npm install RUN npm install
RUN rm -rf /root/.npm/_cacache RUN rm -rf /root/.npm/_cacache
COPY web . COPY web .

View File

@@ -4,9 +4,11 @@ version = "0.1.0"
description = "XML Schema validation library" description = "XML Schema validation library"
requires-python = ">=3.10" requires-python = ">=3.10"
dependencies = [ dependencies = [
"pytest>=8",
"maturin>=1.0,<2.0", "maturin>=1.0,<2.0",
] ]
optional-dependencies.dev = [
"pytest>=8",
]
[build-system] [build-system]
requires = ["maturin>=1.0,<2.0"] requires = ["maturin>=1.0,<2.0"]

View File

@@ -56,7 +56,7 @@ fi
if ! command -v node &> /dev/null; then if ! command -v node &> /dev/null; then
echo "Installing Node.js..." echo "Installing Node.js..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash 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" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install node nvm install node
fi fi

View File

@@ -1,14 +1,20 @@
#!/bin/bash #!/bin/bash
echo "Installing ITB tool..." if [ -z "${SIA_INSTALL_NO_ITB}" ]; then
python3 -m venv /root/venvs/itb echo "Installing ITB tool..."
/root/venvs/itb/bin/pip install -e /root/sia/tools/itb python3 -m venv /root/venvs/itb
/root/venvs/itb/bin/pip install -e /root/sia/tools/itb
fi
echo "Installing Train tool..." if [ -z "${SIA_INSTALL_NO_TRAIN}" ]; then
python3 -m venv /root/venvs/train echo "Installing Train tool..."
/root/venvs/train/bin/pip install -e /root/sia/tools/train python3 -m venv /root/venvs/train
/root/venvs/train/bin/ipython kernel install --name=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..." if [ -z "${SIA_INSTALL_NO_CORE}" ]; then
python3 -m venv /root/venvs/sia echo "Installing SIA core..."
/root/venvs/sia/bin/pip install -e /root/sia python3 -m venv /root/venvs/sia
/root/venvs/sia/bin/pip install -e /root/sia
fi