mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-02 13:18:18 +00:00
Try pre-install deps, use custom launch.json for dev container
Previous attempts have not been sufficient. Let's see if this works
This commit is contained in:
@@ -10,9 +10,9 @@ WORKDIR /workspace
|
|||||||
|
|
||||||
# --- Python Server App Dependencies ---
|
# --- Python Server App Dependencies ---
|
||||||
# Create Python virtual environment
|
# Create Python virtual environment
|
||||||
RUN python3 -m venv .venv
|
RUN python3 -m venv /opt/venv
|
||||||
# Add venv to PATH for subsequent RUN commands and for the container environment
|
# Add venv to PATH for subsequent RUN commands and for the container environment
|
||||||
ENV PATH="/workspace/.venv/bin:${PATH}"
|
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 ./
|
||||||
@@ -30,11 +30,11 @@ RUN sed -i "s/dynamic = \\[\"version\"\\]/version = \"$VERSION\"/" pyproject.tom
|
|||||||
|
|
||||||
# --- 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 ./src/interface/web/
|
COPY src/interface/web/package.json src/interface/web/yarn.lock /tmp/web/
|
||||||
|
|
||||||
# Install web app dependencies
|
# Install web app dependencies
|
||||||
# note: yarn will be available from the "features" in devcontainer.json
|
# note: yarn will be available from the "features" in devcontainer.json
|
||||||
RUN yarn install --cwd ./src/interface/web
|
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,
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
"unifiedjs.vscode-mdx"
|
"unifiedjs.vscode-mdx"
|
||||||
],
|
],
|
||||||
"settings": {
|
"settings": {
|
||||||
"python.defaultInterpreterPath": "/workspace/.venv/bin/python",
|
"python.defaultInterpreterPath": "/opt/venv/bin/python",
|
||||||
"python.formatting.provider": "black",
|
"python.formatting.provider": "black",
|
||||||
"python.linting.enabled": true,
|
"python.linting.enabled": true,
|
||||||
"python.linting.mypyEnabled": true,
|
"python.linting.mypyEnabled": true,
|
||||||
@@ -47,38 +47,10 @@
|
|||||||
],
|
],
|
||||||
"python.testing.unittestEnabled": false,
|
"python.testing.unittestEnabled": false,
|
||||||
"python.testing.pytestEnabled": true,
|
"python.testing.pytestEnabled": true,
|
||||||
"launch": {
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Launch Khoj",
|
|
||||||
"type": "debugpy",
|
|
||||||
"request": "launch",
|
|
||||||
"module": "src.khoj.main",
|
|
||||||
"console": "integratedTerminal",
|
|
||||||
"justMyCode": false,
|
|
||||||
"sudo": true,
|
|
||||||
"args": [
|
|
||||||
"-v",
|
|
||||||
"--anonymous-mode",
|
|
||||||
"--non-interactive",
|
|
||||||
"--port=42110"
|
|
||||||
],
|
|
||||||
"envFile": "${workspaceFolder}/.env",
|
|
||||||
"env": {
|
|
||||||
"KHOJ_ADMIN_EMAIL": "admin",
|
|
||||||
"KHOJ_ADMIN_PASSWORD": "admin",
|
|
||||||
"USE_EMBEDDED_DB": "true",
|
|
||||||
"KHOJ_DEBUG": "true",
|
|
||||||
"KHOJ_TELEMETRY_DISABLED": "true",
|
|
||||||
"PROMPTRACE_DIR": "${workspaceFolder}/promptrace"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postCreateCommand": "scripts/dev_setup.sh",
|
"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": {
|
"ghcr.io/devcontainers/features/node:1": {
|
||||||
|
|||||||
29
.devcontainer/launch.json
Normal file
29
.devcontainer/launch.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Launch Khoj",
|
||||||
|
"type": "debugpy",
|
||||||
|
"request": "launch",
|
||||||
|
"module": "src.khoj.main",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"justMyCode": false,
|
||||||
|
"sudo": true,
|
||||||
|
"args": [
|
||||||
|
"-v",
|
||||||
|
"--anonymous-mode",
|
||||||
|
"--non-interactive",
|
||||||
|
"--port=42110"
|
||||||
|
],
|
||||||
|
"envFile": "${workspaceFolder}/.env",
|
||||||
|
"env": {
|
||||||
|
"KHOJ_ADMIN_EMAIL": "admin",
|
||||||
|
"KHOJ_ADMIN_PASSWORD": "admin",
|
||||||
|
"USE_EMBEDDED_DB": "true",
|
||||||
|
"KHOJ_DEBUG": "true",
|
||||||
|
"KHOJ_TELEMETRY_DISABLED": "true",
|
||||||
|
"PROMPTRACE_DIR": "${workspaceFolder}/promptrace"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -4,26 +4,47 @@ PROJECT_ROOT=$(git rev-parse --show-toplevel)
|
|||||||
|
|
||||||
# Default to minimal installation unless --full flag passed
|
# Default to minimal installation unless --full flag passed
|
||||||
INSTALL_FULL=false
|
INSTALL_FULL=false
|
||||||
|
DEVCONTAINER=false
|
||||||
for arg in "$@"
|
for arg in "$@"
|
||||||
do
|
do
|
||||||
if [ "$arg" == "--full" ]
|
if [ "$arg" == "--full" ]
|
||||||
then
|
then
|
||||||
INSTALL_FULL=true
|
INSTALL_FULL=true
|
||||||
fi
|
fi
|
||||||
|
if [ "$arg" == "--devcontainer" ]
|
||||||
|
then
|
||||||
|
DEVCONTAINER=true
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Install Server App
|
if [ "$DEVCONTAINER" = true ]; then
|
||||||
# ---
|
echo "Dev container setup - using pre-installed dependencies..."
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
|
||||||
|
# Use devcontainer launch.json
|
||||||
|
mkdir -p .vscode && cp .devcontainer/launch.json .vscode/launch.json
|
||||||
|
|
||||||
|
# Activate the pre-installed venv (no need to create new one)
|
||||||
|
echo "Using Python environment at /opt/venv"
|
||||||
|
# PATH should already include /opt/venv/bin from Dockerfile
|
||||||
|
|
||||||
|
# Install khoj in editable mode (dependencies already installed)
|
||||||
|
python3 -m pip install -e '.[dev]'
|
||||||
|
|
||||||
|
# Install Web App using cached dependencies
|
||||||
|
echo "Installing Web App using cached dependencies..."
|
||||||
|
cd "$PROJECT_ROOT/src/interface/web"
|
||||||
|
yarn install --cache-folder /opt/yarn-cache && yarn export
|
||||||
|
else
|
||||||
|
# Standard setup
|
||||||
echo "Installing Server App..."
|
echo "Installing Server App..."
|
||||||
cd $PROJECT_ROOT
|
cd "$PROJECT_ROOT"
|
||||||
# pip install --user pipenv && pipenv install -e '.[dev]' --skip-lock && pipenv shell
|
|
||||||
python3 -m venv .venv && . .venv/bin/activate && python3 -m pip install -e '.[dev]'
|
python3 -m venv .venv && . .venv/bin/activate && python3 -m pip install -e '.[dev]'
|
||||||
|
|
||||||
# Install Web App
|
|
||||||
# ---
|
|
||||||
echo "Installing Web App..."
|
echo "Installing Web App..."
|
||||||
cd $PROJECT_ROOT/src/interface/web
|
cd "$PROJECT_ROOT/src/interface/web"
|
||||||
yarn install && yarn export
|
yarn install && yarn export
|
||||||
|
fi
|
||||||
|
|
||||||
# Install Obsidian App
|
# Install Obsidian App
|
||||||
# ---
|
# ---
|
||||||
|
|||||||
Reference in New Issue
Block a user