mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-02 13:18:18 +00:00
Use UV, Deno for faster setup of development container
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user