@@ -38,6 +38,36 @@ docker -v
3838
3939### 核心配置
4040
41+ ``` bash showLineNumbers
42+ # 构建镜像
43+ docker build -t llmchat:0.0.2 .
44+
45+ # 打标签
46+ docker tag llmchat:0.0.2 jiangmiemie/llmchat:0.0.2
47+
48+ # 登录
49+ docker login
50+
51+ # 推送
52+ docker push jiangmiemie/llmchat:0.0.2
53+
54+ # 拉取
55+ docker pull jiangmiemie/llmchat:0.0.2
56+
57+ # 启动
58+ docker run -d -p 8501:8501 jiangmiemie/llmchat:0.0.2
59+
60+ # 查看
61+ docker ps -a
62+
63+ # 停止
64+ docker stop {container_id}
65+
66+ # 删除
67+ docker rm {container_id}
68+ ```
69+
70+
4171#### build
4272
4373build一个镜像的时候,如下关键字必不可少:
196226docker cp 容器id:文件路径 本机路径
197227```
198228
199- ### 实战案例:群晖服务器搭建
229+ ## 实战案例:群晖服务器搭建
200230
201231首先确保自己对每个环节的设备都拥有绝对控制权,在常见的家庭网络环节下,
202232
@@ -218,7 +248,7 @@ docker cp 容器id:文件路径 本机路径
218248
219249由于群晖有很多版本,路由器也有很多版本,我这里只是提供一个思路,不保证一定能成功。
220250
221- ## 群晖
251+ ### 群晖
222252
223253在群晖套件中心找到 Container Manager
224254
@@ -232,14 +262,185 @@ docker cp 容器id:文件路径 本机路径
232262
233263关于映射:如果你把宝塔的登录端口8888映射为群晖服务器的4444,那么此时你就可以通过群晖的4444端口访问宝塔了。
234264
235- ## 路由器
265+ ### 路由器
236266
237267开启设备映射,将群晖设为固定的IP地址,将群晖的端口映射到路由器的端口。
238268
239269如果你把群晖的4444端口映射为80,并且把域名绑定到公网IP上时
240270
241271那么当你访问这个域名会跳转到路由器80端口,再跳到群晖的4444端口,再跳到群晖宝塔容器的8888端口。
242272
273+ ## docker-compose
274+
275+ docker-compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过一个 YAML 文件来配置应用程序的服务、网络和卷,并使用一个命令来启动、停止和重新启动这些服务。当你需要启动多个容器时,docker-compose 可以简化这个过程。
276+
277+ ### 目录结构
278+
279+ ``` bash showLineNumbers
280+ ├── backend
281+ │ ├── Dockerfile
282+ │ ├── chat_routers.py
283+ │ └── requirements.txt
284+ ├── frontend
285+ │ ├── Dockerfile
286+ │ ├── requirements.txt
287+ │ └── _streamlit
288+ │ └── streamlit_app.py
289+ ├── docker-compose.yml
290+ └── README.md
291+ ```
292+
293+ ### 文件示例
294+
295+ ``` yaml showLineNumbers
296+ version : ' 3.8' # 指定 Docker Compose 文件的版本
297+
298+ services : # 定义服务
299+ python-app-frontend : # 新增的 Python 应用服务
300+ build : # 使用 Dockerfile 构建镜像
301+ context : ./frontend # 前端上下文目录
302+ dockerfile : Dockerfile # Dockerfile 文件
303+ image : jiangmiemie/llmchatf:0.0.2
304+ ports :
305+ - " 8501:8501" # 映射 Streamlit 默认端口
306+ command : ["streamlit", "run", "_streamlit/streamlit_app.py"] # 启动命令
307+ depends_on :
308+ - python-app-backend
309+
310+ python-app-backend : # 新增的后端服务
311+ build : # 使用 Dockerfile 构建镜像
312+ context : ./backend # 后端上下文目录
313+ dockerfile : Dockerfile # 后端 Dockerfile 文件
314+ image : jiangmiemie/llmchatb:0.0.2
315+ ports :
316+ - " 8010:8010" # 映射后端服务端口
317+ command : ["python", "chat_routers.py"] # 启动后端服务的命令
318+ ` ` `
319+
320+
321+
322+
323+
324+ ### 启动说明
325+
326+ 1. 首先确保你在包含 ` docker-compose.yml` 文件的目录下,然后执行以下命令来构建和启动服务:
327+
328+ ` ` ` bash showLineNumbers
329+ # 构建并启动所有服务(后台运行)
330+ docker-compose up -d
331+
332+ # 如果需要查看日志
333+ docker-compose logs -f
334+ ` ` `
335+
336+ 2. 或者如果你想在前台运行并直接看到日志:
337+
338+ ` ` ` bash
339+ # 构建并启动所有服务(前台运行)
340+ docker-compose up
341+ ` ` `
342+
343+ 3. 其他常用命令:
344+
345+ ` ` ` bash
346+ # 停止所有服务
347+ docker-compose down
348+
349+ # 重新构建并启动(当 Dockerfile 发生变化时)
350+ docker-compose up -d --build
351+
352+ # 查看服务状态
353+ docker-compose ps
354+
355+ # 查看特定服务的日志
356+ docker-compose logs -f python-app-frontend
357+ docker-compose logs -f python-app-backend
358+
359+
360+ 如果遇到问题:
361+
362+ 1. 确保 Docker 和 Docker Compose 已经正确安装
363+ 2. 检查端口是否被占用
364+ 3. 查看容器日志排查问题:
365+ ` ` ` bash
366+ docker-compose logs -f
367+ ```
368+
369+ 4 . 如果需要重置环境:
370+ ``` bash
371+ # 停止并删除所有容器、网络
372+ docker-compose down
373+
374+ # 如果还需要删除构建的镜像
375+ docker-compose down --rmi all
376+ ```
377+
378+ 记住,任何修改 Dockerfile 或代码后,都需要重新构建镜像:
379+ ``` bash
380+ docker-compose up -d --build
381+ ```
382+
383+ ### 构建与推送
384+
385+ ``` bash showLineNumbers
386+ # 构建镜像
387+ docker-compose build
388+
389+ # 推送所有镜像到仓库
390+ docker-compose push
391+ ```
392+
393+ ### 拉取和运行多个容器
394+
395+ 1 . 在目标环境创建 docker-compose.yml:
396+
397+ ```` yaml:docker-compose.yml
398+ version: '3.8'
399+ services:
400+ frontend:
401+ image: your-registry/frontend:latest
402+ ports:
403+ - "8501:8501"
404+
405+ backend:
406+ image: your-registry/backend:latest
407+ ports:
408+ - "8010:8010"
409+ ````
410+
411+ 2 . 拉取和运行:
412+
413+ ``` bash
414+ # 拉取所有镜像
415+ docker-compose pull
416+
417+ # 启动所有服务
418+ docker-compose up -d
419+ ```
420+
421+ ### 补充说明
422+
423+ 1 . 如果使用私有仓库,需要先登录:
424+ ``` bash
425+ docker login your-registry
426+ ```
427+
428+ 2 . 可以使用环境变量控制版本:
429+ ```` yaml:docker-compose.yml
430+ services:
431+ frontend:
432+ image: your-registry/frontend:${TAG:-latest}
433+ ````
434+
435+ 3 . 可以只操作特定服务:
436+ ``` bash
437+ # 只推送前端
438+ docker-compose push frontend
439+
440+ # 只拉取后端
441+ docker-compose pull backend
442+ ```
443+
243444## k8s
244445
245446Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。
0 commit comments