您现在的位置是:首页 >其他 >第二篇 chatgpt-on-wechat项目 Docker部署问题 build.alpine.sh文件内容解读网站首页其他

第二篇 chatgpt-on-wechat项目 Docker部署问题 build.alpine.sh文件内容解读

刘广睿 2023-06-06 08:00:02
简介第二篇 chatgpt-on-wechat项目 Docker部署问题 build.alpine.sh文件内容解读

# fetch latest release tag
CHATGPT_ON_WECHAT_TAG=`curl -sL "https://api.github.com/repos/zhayujie/chatgpt-on-wechat/releases/latest" | 
     grep '"tag_name":' | 
     sed -E 's/.*"([^"]+)".*/1/'`

# build image
docker build -f Dockerfile.alpine 
             --build-arg CHATGPT_ON_WECHAT_VER=$CHATGPT_ON_WECHAT_TAG 
             -t zhayujie/chatgpt-on-wechat .

# tag image
docker tag zhayujie/chatgpt-on-wechat zhayujie/chatgpt-on-wechat:alpine
docker tag zhayujie/chatgpt-on-wechat zhayujie/chatgpt-on-wechat:$CHATGPT_ON_WECHAT_TAG-alpine

上面的脚本介绍

这个指令组用于自动化构建 Docker 镜像的过程:

  1. 用 curl 命令获取 GitHub 上发布的最新版本的标签。
  2. 使用 Dockerfile.alpine 文件构建 Docker 镜像,并将变量 CHATGPT_ON_WECHAT_VER 设置为最新标签。
  3. 标记构建后的 Docker 镜像为 zhayujie/chatgpt-on-wechat 和 zhayujie/chatgpt-on-wechat:$CHATGPT_ON_WECHAT_TAG-alpine(alpine
    是基础镜像的名称)

指令1 sed -E ‘s/.“([^”]+)"./1/’ 指令解析

这个指令是一个基于正则表达式的替换命令,其作用是从输入文本中匹配所有双引号(")之间的文本,然后用匹配到的文本替换整个匹配项。具体来说,该表达式的含义如下:

  • s:表示 “substitute”的缩写,表示替换命令。
  • /:用于分隔表达式的开始和结束。
  • .*:匹配零个或多个任意字符。
  • ":匹配双引号(“)。
  • ([^"]+):匹配一个或多个不是双引号的字符,并将其分组为一组。
  • 1:用第一个匹配分组(也就是 ([^"]+))替换整个匹配项,即保留双引号之间的文本。

指令2 curl -sL “https://api.github.com/repos/zhayujie/chatgpt-on-wechat/releases/latest” 指令解析

这是一个 cURL 命令,用来获取 GitHub 上一个名为 chatgpt-on-wechat 的仓库的最新 Release
的信息。具体解释如下:

  • curl 使用 cURL 工具发送 HTTP 请求
  • sL 参数,表示让 cURL 静默执行,不显示进度或错误信息并自动重定向
  • https://api.github.com/repos/zhayujie/chatgpt-on-wechat/releases/latest":
    GitHub 的 REST API 的地址,指向 zhayujie/chatgpt-on-wechat 仓库的最新
    Release,其中 https://api.github.com 是 API
    的基础地址,repos/zhayujie/chatgpt-on-wechat/releases/latest 表示获取该仓库的最新
    Release 相关信息。需要注意的是,最新 Release 并不一定是最新版本,可能只是最新的一个版本发布记录。
  • 最终会返回该仓库最新 Release 的 JSON 格式信息。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。