当前位置:   article > 正文

vscode远程调试服务器docker内部代码_vscode 调试docker代码

vscode 调试docker代码

目录

1 启动open-webui容器

2 docker容器里面安装相应的软件

2.1 docker安装ssh 

2.2 设置允许root登录

2.3 添加ll命令

3 配置vscode远程登录服务器docker

3.1 vscode安装插件

3.2 连接服务器的docker

3.3 Setting up SSH Host :Copying VS Code Server to host with scp

3.3.1第一个错误

3.3.2第二个错误

4 调试python代码

参考文献:


1 启动open-webui容器

  1. docker run -d \
  2. -p 13006:8080 \
  3. -p 13007:8081 \
  4. -p 6022:22  \
  5. -e RAG_EMBEDDING_MODEL=/app/backend/embedding_model/bge-large-zh \
  6. --add-host=host.docker.internal:host-gateway \
  7. -v /data/fc/open-webui/embedding_model:/app/backend/embedding_model \
  8. -v /data/chw/ollama_20240419/debug_data:/app/backend/data  \
  9. --name open-webui_debug_chw  \
  10. --restart always  \
  11. ghcr.io/open-webui/open-webui:main

这里的三个-p,

  • -p 13006:8080 是用来浏览器登录open-webui的,
  • -p 13007:8081 是用来调试open-webui的,
  • -p 6022:22  是用来ssh登录的。

2 docker容器里面安装相应的软件

2.1 docker安装ssh 

  1. apt-get update
  2. apt-get install openssh-server openssh-client
  3. apt-get install ssh
  4. apt-get install vim

2.2 设置允许root登录

添加root用户远程登录:

1)passwd root为root添加密码。

2)开启root通过ssh远程登录,编辑 /etc/ssh/sshd_config将PermitRootLogin改为yes

vim /etc/ssh/sshd_config

修改PermitRootLogin为yes,并且把最大连接数的三行注释放开,如果最大连接数的注释不放开,那么只能有一个客户端连接,我xshell连接了之后,再用xftp工具连接会提示连接失败。

修改为

3)systemctl enable ssh;service ssh start

4) 在容器中设置开机自启动SSH服务

在 Docker 容器内运行 SSH 服务时,当容器停止后 SSH 服务会随之关闭,而当容器重新启动后 SSH 服务默认情况下不会自动重启。这是因为 Docker 容器本身是一个隔离的环境,容器内的服务与主机环境是相互独立的。本操作可以用以解决restart容器后使ssh自动启动,从而不影响远程连接。

  1. # 找到并打开文件/root/.bashrc
  2. $ vim /root/.bashrc
  3. # 在.bashrc末尾添加如下代码
  4. $ service ssh start

2.3 添加ll命令

  1. vim ~/.bashrc,
  2. 添加 alias ll='ls -al' 这里要用ls -al,不是ls -l,
  3. source ~/.bashrc

3 配置vscode远程登录服务器docker

3.1 vscode安装插件

  • Remote - SSH:用于远程连接到服务器。

3.2 连接服务器的docker

按F1,然后选择connect to host

然后选择configure SSH Host

然后

然后加上下面的内容,这里的端口号6022是前面启docker容器时映射的,映射到了docker内部的22端口。 

然后再次按F1,选择IP地址则连接到相应的服务器。

然后输入密码就可以登录了,但是这里登录会卡顿很久,出现了下面的问题

3.3 Setting up SSH Host :Copying VS Code Server to host with scp

按照前面的方法配置了之后,然后登录会出现的问题,一直卡顿在这里,

然后网上搜Setting up SSH Host :Copying VS Code Server to host with scp,给出的解决方法都是类似的,那就是手动下载vscode-servlet.tar.gz,然后替换为/root/.vscode-server/bin/xxxx一串id,我也是按照这个方法去解决,但是犯了两个错误,

3.3.1第一个错误

我在我的服务器物理机的/root/.vscode-server/bin/目录去这样操作,这样不起作用,要做的是去docker里面的/root/.vscode-server/bin/这个目录去下载替换。

3.3.2第二个错误

我去docker的目录里面,然后我cd /root/,然后我ll发现啥也没有,并没有.vscode-server目录,这是因为我前面添加命令别名的时候用的是alias ll='ls -l' 而不是alias ll='ls -al' 所以看不到,如果我手动在/root目录下敲ls -al就会看到.vscode-server目录了。

知道上面两个错误之后,接下来我在docker里面的/root/.vscode-server/bin目录里面用

wget https://update.code.visualstudio.com/commit:8b3775030ed1a69b13e4f4c628c612102e30a681/server-linux-x64/stable

下载文件,但是下载之后发现名字叫stable,而如果我在windows的浏览器里面直接下载得到的是一个压缩包,所以这里猜测这个stable其实就是个压缩包,只是名字不一样,因此我接下来用这个命令,问题解决,

  1. mv stable stable.tar.gz
  2. tar -xvf stable.tar.gz #这样之后得到的就是vscode-server-linux-x64/
  3. ll
  4. rm -rf ./8b3775030ed1a69b13e4f4c628c612102e30a681/
  5. mv vscode-server-linux-x64/ 8b3775030ed1a69b13e4f4c628c612102e30a681

然后重启vscode,再次连接,问题解决。

4 调试python代码

前面已经成功连接到了服务器的docker,打开docker里面的某个文件夹,我这里项目的特殊性,因为我的/app目录下的代码被浏览器连接着,因此不好修改,我这里复制一份专门用来调试,

cp -drf app /home/

然后vscode安装python插件

然后run--Add configuration--Python debugger,选择下面这个

然后在json里面写下面的内容

  1. {
  2. // Use IntelliSense to learn about possible attributes.
  3. // Hover to view descriptions of existing attributes.
  4. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {
  8. "name": "Python Debugger: FastAPI",
  9. "type": "debugpy",
  10. "request": "launch",
  11. "module": "uvicorn",
  12. "args": [
  13. "main:app",
  14. "--host", "0.0.0.0",
  15. "--port", "8081",
  16. "--forwarded-allow-ips", "'*'"
  17. ],
  18. "jinja": true,
  19. "cwd": "/home/app/backend/",
  20. "env": {"RAG_EMBEDDING_MODEL" : "/app/backend/embedding_model/bge-large-zh"}
  21. }
  22. ]
  23. }

其中:

  • args里面是参数,因为本来命令行的时候命令是这样的;  /usr/local/bin/python /usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 8081 --forwarded-allow-ips '*'  
  • cwd是相对路径,用来表示main.cpp所在的路径。
  • env是环境变量,本来命令行要设置的环境变量是,export RAG_EMBEDDING_MODEL=/app/backend/embedding_model/bge-large-zh 

参考文献:

ubuntu允许root用户ssh远程登录_ubuntu开启ssh root远程登录-CSDN博客

Vscode连接远程服务器中的docker容器进行开发(两种方法)_vscode连接远程服务器的docker容器-CSDN博客

vscode卡在Setting up SSH Host XX:Copying VS Code Server to host with scp-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/593959
推荐阅读
相关标签
  

闽ICP备14008679号