Docker本地部署和映射

Docker本地部署和映射

问题

问题的由来

Open WebUi 项目是开源的大模型问答可视化的项目。原本想本地部署,但是部署没成功,因为最后一步有些地方除了问题,需要手动下载,对于这个开源项目不熟悉,不知道具体下载什么和放在项目什么位置。
同时他的官网也是知识提供了docker下载,没有提供本地下载可靠方法。借用原文就是:虽然我们强烈建议使用方便的 Docker 容器安装以获得最佳支持,但我们知道某些情况可能需要非 Docker 设置,尤其是出于开发目的。请注意,官方不支持非 Docker 安装,您可能需要自行进行故障排除。 于是就是通过docker安装,然后本地改了再通过docker部署上去。

问题的解决

开始

开始是比较迷的,就是直接没有接触过docker,这一次采用docker部署,然后直接用的官网的命令。他对于我来说是一个黑盒子。 于是在网上找,通过百度搜,还有就是通过chatgpt问。然后看了一下官网,没看懂。

之后就是在一个多小时后,通过gpt有了下面《之前的思路》。然后按照这个实践。但是遇到了问题: docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v E:/webdocker:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

通过这个代码,映射到本地,但是就是不是我本地运行的代码。只有一些部分代码,没看懂。觉得这个思路有问题。

中间

接着上面的,于是请教老同事,得到的结论有两个点:一个是这个思路是对的,通过映射建立本地和容器里面代码一样;一个是我目前这个的代码

bash 复制代码
-v E:/webdocker:/app/backend
应该改为:-v E:/webdocker:/app

于是我按照这个思路继续改,其实就是把命令改一下。

结果发现改了之后。docker容器创建了,但是运行不起来了。

于是乎我就是继续百度。

然后就是自己看了一下,摸索着:这个不就是文件的映射吗。我直接把本地可以运行的文件放在这个地方就是可以了。于是把本地可以运行的文件放在了这个位置,docker运行起来了。

然后给我改了代码,然后重启容器,发现项目运行起来了,就是没有显示改过之后的代码,还是之前的。

最后

然后这个问题继续请教同事,得到的结果是应该有个地方没有配好。和我说了可以使用docker desktop 配置,然后演示了一遍给我看。

我就自己配置,不再通过命令来创建容器,修改映射地址,直接通过可视化的docker desktop来改。

然后发下创建了之后仍然不可以。 再次请教,得到的答案是不要把整个都替换了,只需要替换build(但是第一次问得到的结果是说把这个替换了) 然后就是只是把build替换了,但是发现还是运行之后发现不是最新的代码,通过decker desktop 发现也是挂载上去了但是就是不是最新的代码。

后面再次请教,同事来调试了会儿。后面慢慢发现,是配置映射的时候,映射的还是app,不是app下的build。然后映射之后是运行不起来的,需要自己把本地的build放进去之后才是可以的。

最后就是完美解决了

之前的思路

思路

官网:github.com/open-webui/... 官方推荐下载docker:docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

如果你想修改 Docker 容器中运行的代码,并且希望将修改后的代码重新部署到 Docker 中,你可以按照以下步骤进行操作:

  1. 在本地修改代码: 首先,在你的本地开发环境中修改 Docker 容器中运行的代码。你可以使用任何你喜欢的编辑器或集成开发环境来进行代码修改。
  2. 重新构建 Docker 镜像: 一旦你完成了代码的修改,你需要根据修改后的代码重新构建 Docker 镜像。你可以在 Dockerfile 所在的目录中运行 docker build 命令来构建镜像。例如:
lua 复制代码
bashCopy code
docker build -t ghcr.io/open-webui/open-webui:latest .

确保将命令中的镜像标签替换为你想要的标签,并且命令中的 . 表示 Dockerfile 所在的目录。

  1. 停止并删除当前运行的容器: 在部署新的 Docker 镜像之前,你需要停止并删除当前正在运行的容器。你可以使用以下命令:
arduino 复制代码
bashCopy codedocker stop open-webui
docker rm open-webui
  1. 运行新的 Docker 容器: 一旦你构建了新的 Docker 镜像,并且删除了旧的容器,你可以使用 docker run 命令来运行新的容器。确保将命令中的镜像标签替换为你刚刚构建的镜像标签。
kotlin 复制代码
bashCopy code
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:latest

通过这些步骤,你就可以在本地修改 Docker 容器中的代码,并将修改后的代码重新部署到 Docker 中。

第一步 本地修改代码

如果你想在本地修改 Docker 容器中运行的代码,你需要通过挂载卷(Volume)的方式将容器内的代码映射到你的本地开发环境中,然后在本地环境中进行修改。一般来说,你可以按照以下步骤操作:

  1. 确定容器内的代码路径: 首先,你需要确定容器内运行的代码位于哪个路径。在你提供的命令中,使用了 -v open-webui:/app/backend/data 参数来将名为 open-webui 的 Docker 卷挂载到了容器中的 /app/backend/data 目录。这意味着容器中的代码位于 /app/backend/data 目录下。
  2. 将容器内的代码映射到本地: 使用这个卷挂载功能,你可以将容器内的代码映射到你的本地开发环境中。具体操作是在运行容器的时候,将本地开发环境中的一个目录挂载到容器内的 /app/backend/data 目录。例如:
arduino 复制代码
bashCopy code
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend --name open-webui --restart always ghcr.io/open-webui/open-webui:main
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v E:/webdocker:/app --name open-webui --restart always ghcr.io/open-webui/open-webui:main

这样,你就将容器内的代码映射到了你本地的 /path/to/local/code 目录下。

  1. 在本地修改代码: 现在,你可以使用你喜欢的编辑器或集成开发环境,在本地的 /path/to/local/code 目录下修改容器内的代码。
  2. 重启容器: 在你完成了代码的修改后,你需要重新启动 Docker 容器,以便使修改生效。你可以使用 docker restart open-webui 命令来重启容器。

通过以上步骤,你就可以在本地修改 Docker 容器中运行的代码,并重新启动容器以使修改生效。

相关推荐
_.Switch1 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一路向前的月光1 小时前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js
长路 ㅤ   1 小时前
vite学习教程06、vite.config.js配置
前端·vite配置·端口设置·本地开发
长路 ㅤ   1 小时前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web1 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
安冬的码畜日常1 小时前
【CSS in Depth 2 精译_044】第七章 响应式设计概述
前端·css·css3·html5·响应式设计·响应式
莹雨潇潇2 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Jiaberrr2 小时前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui
Tiffany_Ho3 小时前
【TypeScript】知识点梳理(三)
前端·typescript
安冬的码畜日常4 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js