玛卡巴卡的卡巴卡玛 发表于 2024-9-2 03:57:15

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容器

docker run -d \
-p 13006:8080 \
-p 13007:8081 \
-p 6022:22  \
-e RAG_EMBEDDING_MODEL=/app/backend/embedding_model/bge-large-zh \
--add-host=host.docker.internal:host-gateway \
-v /data/fc/open-webui/embedding_model:/app/backend/embedding_model \
-v /data/chw/ollama_20240419/debug_data:/app/backend/data  \
--name open-webui_debug_chw  \
--restart always  \
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 

apt-get update
apt-get install openssh-server openssh-client
apt-get install ssh
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工具连接会提示连接失败。
https://i-blog.csdnimg.cn/blog_migrate/5c12515da44d075cc87fa702c7c33bc5.png
修改为
https://i-blog.csdnimg.cn/blog_migrate/39fb35e15134822448d0f469723016b1.png
3)systemctl enable ssh;service ssh start
4) 在容器中设置开机自启动SSH服务
在 Docker 容器内运行 SSH 服务时,当容器停止后 SSH 服务会随之关闭,而当容器重新启动后 SSH 服务默认情况下不会自动重启。这是由于 Docker 容器本身是一个隔离的情况,容器内的服务与主机情况是相互独立的。本操作可以用以解决restart容器后使ssh自动启动,从而不影响长途连接。
# 找到并打开文件/root/.bashrc
$ vim /root/.bashrc
# 在.bashrc末尾添加如下代码
$ service ssh start
2.3 添加ll命令

vim ~/.bashrc,
添加alias ll='ls -al'    这里要用ls -al,不是ls -l,
source ~/.bashrc 3 配置vscode长途登录服务器docker

3.1 vscode安装插件



[*]Remote - SSH:用于长途连接到服务器。
3.2 连接服务器的docker

按F1,然后选择connect to host
https://i-blog.csdnimg.cn/blog_migrate/cbfbeb0538fb4e0a09f62c7566eb5358.png
然后选择configure SSH Host
https://i-blog.csdnimg.cn/blog_migrate/64ab5a3ff35a977e98d8f072faa27324.png
然后
https://i-blog.csdnimg.cn/blog_migrate/beb8b4bf953d29a9ca1514a7a8f0feb4.png
然后加上下面的内容,这里的端标语6022是前面启docker容器时映射的,映射到了docker内部的22端口。 
https://i-blog.csdnimg.cn/blog_migrate/823516fa2d9ad8bf69f9c0548c7d6c89.png
然后再次按F1,选择IP地址则连接到相应的服务器。
https://i-blog.csdnimg.cn/blog_migrate/541a953d8324d4edfde9c7fdb1237167.png
然后输入密码就可以登录了,但是这里登录会卡顿很久,出现了下面的标题
3.3 Setting up SSH Host :Copying VS Code Server to host with scp

按照前面的方法配置了之后,然后登录会出现的标题,一直卡顿在这里,
https://i-blog.csdnimg.cn/blog_migrate/e6d70dcb7fe51648fc42e84b6f399065.png
然后网上搜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其实就是个压缩包,只是名字不一样,因此我接下来用这个命令,标题解决,
mv stablestable.tar.gz
tar -xvf stable.tar.gz    #这样之后得到的就是vscode-server-linux-x64/
ll
rm -rf ./8b3775030ed1a69b13e4f4c628c612102e30a681/
mv vscode-server-linux-x64/ 8b3775030ed1a69b13e4f4c628c612102e30a681
然后重启vscode,再次连接,标题解决。
4 调试python代码

前面已经乐成连接到了服务器的docker,打开docker内里的某个文件夹,我这里项目标特别性,由于我的/app目录下的代码被浏览器连接着,因此不好修改,我这里复制一份专门用来调试,
cp -drf app /home/ 然后vscode安装python插件
然后run--Add configuration--Python debugger,选择下面这个
https://i-blog.csdnimg.cn/blog_migrate/1fcee2c45b6382735f1327e5bca49b1b.png
然后在json内里写下面的内容
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
      
      {
            "name": "Python Debugger: FastAPI",
            "type": "debugpy",
            "request": "launch",
            "module": "uvicorn",
            "args": [
                "main:app",
                "--host", "0.0.0.0",
                "--port", "8081",
                "--forwarded-allow-ips", "'*'"
            ],
            "jinja": true,
            "cwd": "/home/app/backend/",
            "env": {"RAG_EMBEDDING_MODEL" : "/app/backend/embedding_model/bge-large-zh"}
      }
    ]
} 此中:


[*]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博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: vscode长途调试服务器docker内部代码