parent
11c544ef5d
commit
9e9308beaa
@ -0,0 +1,76 @@ |
||||
{ |
||||
// Set container runtime user |
||||
"remoteUser": "work", |
||||
"build": { |
||||
"dockerfile": ".devcontainer/Dockerfile.dev", |
||||
"context": "./", |
||||
"args": { |
||||
"USER_UID": "${localEnv:UID:1001}", |
||||
"USER_GID": "${localEnv:GID:1001}", |
||||
"USER_NAME":"${localEnv:USER:work}" |
||||
}, |
||||
"options": ["--no-cache"] |
||||
|
||||
}, |
||||
"name": "dbgpt", |
||||
"workspaceFolder": "/app", |
||||
"workspaceMount": "source=${localWorkspaceFolder},target=/app,type=bind", |
||||
"runArgs": [ |
||||
"--network", |
||||
"host", |
||||
"--runtime=nvidia", |
||||
"--gpus", |
||||
"all", |
||||
"-e", |
||||
"LOCAL_DB_HOST=${localEnv:LOCAL_DB_HOST}", |
||||
"-e", |
||||
"LOCAL_DB_PASSWORD=${localEnv:LOCAL_DB_PASSWORD}", |
||||
"-e", |
||||
"MYSQL_ROOT_PASSWORD=${localEnv:MYSQL_ROOT_PASSWORD}", |
||||
"-e", |
||||
"LLM_MODEL=${localEnv:LLM_MODEL}", |
||||
"-e", |
||||
"LANGUAGE=${localEnv:LANGUAGE}", |
||||
"-e", |
||||
"PROXY_SERVER_URL=${localEnv:PROXY_SERVER_URL}", |
||||
"-e", |
||||
"HF_HOME=/app/models" |
||||
], |
||||
"mounts": [ |
||||
// sharing-git-credentials see https://code.visualstudio.com/remote/advancedcontainers/sharing-git-credentials |
||||
"source=${localEnv:SSH_AUTH_SOCK},target=/run/host-services/ssh-auth.sock,type=bind", |
||||
// mount to local models |
||||
"source=${localWorkspaceFolder}/models/text2vec-large-chinese,target=/app/models/text2vec-large-chinese,type=bind" |
||||
], |
||||
"containerEnv": { |
||||
"SSH_AUTH_SOCK": "/run/host-services/ssh-auth.sock" |
||||
}, |
||||
"postCreateCommand": "chmod +x /app/.devcontainer/post-create.sh && /app/.devcontainer/post-create.sh", |
||||
"customizations": { |
||||
"vscode": { |
||||
"settings": { |
||||
"extensions.verifySignature": false, |
||||
"http.proxyStrictSSL": false, |
||||
"python.linting.flake8Enabled": true, |
||||
"python.languageServer": "Pylance", |
||||
"python.linting.enabled": true, |
||||
"terminal.integrated.defaultProfile.linux": "zsh", |
||||
"terminal.integrated.shell.linux": "/bin/zsh", |
||||
"python.linting.mypyEnabled": true, |
||||
"python.linting.provider": "ruff", |
||||
"python.formatting.provider": "ruff" |
||||
}, |
||||
"extensions": [ |
||||
"ms-python.python", |
||||
"ms-python.isort", |
||||
"ms-python.vscode-pylance", |
||||
"ms-python.autopep8", |
||||
"ms-vscode.makefile-tools", |
||||
"ms-python.flake8", |
||||
"ms-azuretools.vscode-docker", |
||||
"ms-python.mypy-type-checker", |
||||
"charliermarsh.ruff" |
||||
] |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,40 @@ |
||||
FROM eosphorosai/dbgpt:latest |
||||
ARG EXTRAS="proxy_openai,rag,storage_chromadb,quant_bnb,graph_rag" |
||||
ARG PYTHON_VERSION=3.10 |
||||
ARG USER_UID=1001 |
||||
ARG USER_GID=1001 |
||||
ARG USER=work |
||||
ARG PIP_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple" |
||||
|
||||
WORKDIR /app |
||||
COPY . . |
||||
USER root |
||||
# Set the GID and UID of the container and |
||||
# add a user to prevent permission mismatches |
||||
# between the container user (root) and the host user, |
||||
# and to resolve the issue of the host user lacking write permissions. |
||||
RUN groupadd -g $USER_GID $USER && \ |
||||
useradd -u $USER_UID -g $USER_GID -m $USER && \ |
||||
chown -R $USER_UID:$USER_GID /app |
||||
|
||||
RUN apt-get update && apt-get install -y \ |
||||
git \ |
||||
curl \ |
||||
wget \ |
||||
ssh zsh autojump curl git-flow vim sudo \ |
||||
&& python${PYTHON_VERSION} -m pip install --upgrade pip \ |
||||
&& python${PYTHON_VERSION} -m pip install --upgrade pipx \ |
||||
&& pipx install uv --global \ |
||||
&& chown -R $USER:$USER /opt/.uv.venv \ |
||||
&& echo "$USER ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/$USER \ |
||||
&& chmod 0440 /etc/sudoers.d/$USER |
||||
USER $USER |
||||
ENV UV_LINK_MODE=copy |
||||
RUN /opt/.uv.venv/bin/python3 -m pip install uv -i https://mirrors.aliyun.com/pypi/simple/ && \ |
||||
extras=$(echo $EXTRAS | tr ',' '\n' | while read extra; do echo "--extra $extra"; done | tr '\n' ' ') && \ |
||||
echo $extras && \ |
||||
/opt/.uv.venv/bin/uv pip install -r pyproject.toml --all-extras && \ |
||||
/opt/.uv.venv/bin/uv pip install -r requirements/dev-requirements.txt && \ |
||||
/opt/.uv.venv/bin/uv pip install -r requirements/lint-requirements.txt && \ |
||||
cp .devcontainer/dbgpt.pth /opt/.uv.venv/lib/python3.10/site-packages/dbgpt.pth && \ |
||||
python -c "import dbgpt; print(dbgpt.__version__)" |
@ -0,0 +1,8 @@ |
||||
/app/packages/dbgpt-app/src |
||||
/app/packages/dbgpt-accelerator |
||||
/app/packages/dbgpt-accelerator/src |
||||
/app/packages/dbgpt-core/src |
||||
/app/packages/dbgpt-client/src |
||||
/app/packages/dbgpt-ext/src |
||||
/app/packages/dbgpt-serve/src |
||||
/app/packages/dbgpt-app/src |
@ -0,0 +1,54 @@ |
||||
#!/bin/bash |
||||
set -e |
||||
cd /app |
||||
# Install Oh My Zsh |
||||
if [ ! -d ~/.oh-my-zsh ]; then |
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended |
||||
fi |
||||
|
||||
# Install plugins |
||||
plugins=( |
||||
"zsh-users/zsh-autosuggestions" |
||||
"zsh-users/zsh-syntax-highlighting" |
||||
) |
||||
|
||||
for plugin in "${plugins[@]}"; do |
||||
repo_name=$(basename $plugin) |
||||
if [ ! -d ~/.oh-my-zsh/custom/plugins/$repo_name ]; then |
||||
git clone --depth=1 https://github.com/$plugin.git ~/.oh-my-zsh/custom/plugins/$repo_name |
||||
fi |
||||
done |
||||
|
||||
# Install theme |
||||
if [ ! -d ~/.oh-my-zsh/custom/themes/powerlevel10k ]; then |
||||
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k |
||||
fi |
||||
|
||||
# Apply custom configuration |
||||
if [ -f /workspace/.devcontainer/zshrc-config ]; then |
||||
cp /workspace/.devcontainer/zshrc-config ~/.zshrc |
||||
else |
||||
# Generate basic .zshrc if no custom configuration exists |
||||
cat << EOF > ~/.zshrc |
||||
export ZSH="\$HOME/.oh-my-zsh" |
||||
ZSH_THEME="robbyrussell" |
||||
plugins=(git zsh-autosuggestions zsh-syntax-highlighting autojump) |
||||
source \$ZSH/oh-my-zsh.sh |
||||
|
||||
# Enable autojump |
||||
[[ -s /usr/share/autojump/autojump.sh ]] && source /usr/share/autojump/autojump.sh |
||||
EOF |
||||
fi |
||||
|
||||
# Ensure autojump configuration is applied (even if custom configuration exists) |
||||
if ! grep -q "autojump.sh" ~/.zshrc; then |
||||
echo '[[ -s /usr/share/autojump/autojump.sh ]] && source /usr/share/autojump/autojump.sh' >> ~/.zshrc |
||||
fi |
||||
cat << EOF >> ~/.zshrc |
||||
# Add the following to ~/.zshrc |
||||
if [ -f /app/.env ]; then |
||||
export $(grep -vE '^#|^$' /app/.env | xargs) |
||||
fi |
||||
EOF |
||||
rm -rf .venv.make |
||||
echo "Post-create setup completed!" |
Loading…
Reference in new issue