Use UV, Deno for faster setup of development container

This commit is contained in:
Debanjum
2025-06-08 19:07:38 -07:00
parent d2940de367
commit 8700fb8937
2 changed files with 14 additions and 19 deletions

View File

@@ -1,19 +1,19 @@
ARG PYTHON_VERSION=3.10 ARG PYTHON_VERSION=3.12
FROM mcr.microsoft.com/devcontainers/python:${PYTHON_VERSION} FROM mcr.microsoft.com/devcontainers/python:${PYTHON_VERSION}
# Install Node.js and Yarn # Install UV and Deno
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ RUN curl -fsSL https://deno.land/install.sh | sh
apt-get install -y nodejs COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
RUN uv python pin $PYTHON_VERSION
# create python virtual environment
RUN uv venv /opt/venv --python $PYTHON_VERSION --seed
# Add venv, deno to PATH for subsequent RUN commands and for the container environment
ENV PATH="/opt/venv/bin:/root/.deno/bin:$PATH"
# Setup working directory # Setup working directory
WORKDIR /workspace WORKDIR /workspace
# --- Python Server App Dependencies --- # --- Python Server App Dependencies ---
# Create Python virtual environment
RUN python3 -m venv /opt/venv
# Add venv to PATH for subsequent RUN commands and for the container environment
ENV PATH="/opt/venv/bin:${PATH}"
# Copy files required for Python dependency installation. # Copy files required for Python dependency installation.
COPY pyproject.toml README.md ./ COPY pyproject.toml README.md ./
@@ -26,15 +26,15 @@ ENV PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu" \
VERSION=0.0.0 VERSION=0.0.0
# Install Python dependencies from pyproject.toml in editable mode # Install Python dependencies from pyproject.toml in editable mode
RUN sed -i "s/dynamic = \\[\"version\"\\]/version = \"$VERSION\"/" pyproject.toml && \ RUN sed -i "s/dynamic = \\[\"version\"\\]/version = \"$VERSION\"/" pyproject.toml && \
pip install --no-cache-dir ".[dev]" uv sync --all-extras && \
chown -R vscode:vscode /opt/venv
# --- Web App Dependencies --- # --- Web App Dependencies ---
# Copy web app manifest files # Copy web app manifest files
COPY src/interface/web/package.json src/interface/web/yarn.lock /tmp/web/ COPY src/interface/web/package.json src/interface/web/deno.json src/interface/web/deno.lock /tmp/web/
# Install web app dependencies # Install web app dependencies
# note: yarn will be available from the "features" in devcontainer.json RUN cd /tmp/web && deno install
RUN yarn install --cwd /tmp/web --cache-folder /opt/yarn-cache
# The .venv and node_modules are now populated in the image. # The .venv and node_modules are now populated in the image.
# The rest of the source code will be mounted by VS Code from your local checkout, # The rest of the source code will be mounted by VS Code from your local checkout,

View File

@@ -4,7 +4,7 @@
"dockerfile": "Dockerfile", "dockerfile": "Dockerfile",
"context": "..", // Build context is the project root "context": "..", // Build context is the project root
"args": { "args": {
"PYTHON_VERSION": "3.10" "PYTHON_VERSION": "3.12"
} }
}, },
"forwardPorts": [ "forwardPorts": [
@@ -53,11 +53,6 @@
"postCreateCommand": "scripts/dev_setup.sh --devcontainer", "postCreateCommand": "scripts/dev_setup.sh --devcontainer",
"features": { "features": {
"ghcr.io/devcontainers/features/github-cli:1": {}, "ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/node:1": {
"version": "lts",
"installYarnUsingApt": false,
"nodeGypDependencies": true
}
}, },
"remoteUser": "vscode" "remoteUser": "vscode"
} }