【Docker教程(二)】Docker安装和chatgpt私有化部署

1. Docker基本介绍

2. Docker和Docker Compose安装

3. Docker启动容器

4. chatgpt私有化部署

5. docker-compose.yml文件模板

6. 结合tg的chatgpt私有化部署

1. Docker基本介绍

Docker 是一款开源的容器化引擎,允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后在任何 Linux、Windows 或 macOS 等操作系统上运行。

以下是 Docker 的发展历史和基本情况:

  • 2013 年,Docker 的前身 dotCloud 开始开发 Docker。
  • 2013 年 3 月,Docker 首次公开发布。
  • 2014 年,Docker 开源,并加入了 Docker Hub,这是一个存储和分享 Docker 镜像的中心仓库。
  • 2015 年,Docker 发布了第一个稳定版 Docker 1.0。
  • 2016 年,Docker 和微软合作推出了 Docker for Windows 和 Docker for Mac,这使得 Docker 在 Windows 和 macOS 上的使用变得更加方便。
  • 2017 年,Docker 推出了 Docker EE(Enterprise Edition),以满足企业级需求,并推出了 Docker Compose v3。
  • 2019 年,Docker 推出了 Docker Desktop,这是一个包含 Docker 引擎和 Docker CLI 的桌面应用程序,可以在 Windows 和 macOS 上安装和使用 Docker。
  • 2020 年,Docker 将 Docker Desktop for Windows 和 Docker Desktop for Mac 的代码开源,这意味着社区可以自由地参与到这个项目中。

目前,Docker 已成为业界标准的容器化技术,被广泛应用于各种场景,如开发、测试、部署等。Docker 镜像可以在 Docker Hub 中分享和获取,其中包括了许多常见的应用程序和开发工具,使得开发者可以更加方便地构建和部署应用程序。此外,Docker 还支持容器编排工具,如 Docker Compose 和 Kubernetes,可以帮助开发者更加高效地管理和运行容器化应用程序。

Docker Compose 是一个用于定义和运行多个容器应用程序的工具,可以通过一个 YAML 文件来定义一组服务,并通过 docker-compose 命令来管理这些服务。Docker Compose 可以让你轻松地定义和部署 Docker 应用,而无需手动编写 Dockerfile 或使用 Docker 命令来创建和启动容器。

Docker Compose 的工作原理如下:

  1. docker-compose.yml 文件中定义服务,包括每个服务的容器名称、镜像、端口、环境变量等信息。

  2. 使用 docker-compose 命令构建和启动服务。

  3. Docker Compose 会自动启动和管理服务之间的网络通信,并确保服务在正确的顺序下启动。

  4. 可以使用 docker-compose 命令来管理服务,如启动、停止、重启、删除等。

Docker Compose 支持多个容器的组合,可以用来构建复杂的应用程序。它还支持动态扩展,可以根据需要启动或停止多个容器实例。

Docker Compose 的基本命令包括

  • docker-compose up: 启动所有服务。

  • docker-compose down: 停止并删除所有服务。

  • docker-compose build: 构建镜像。

  • docker-compose start: 启动服务。

  • docker-compose stop: 停止服务。

  • docker-compose restart: 重启服务。

  • docker-compose ps: 列出所有服务。

  • docker-compose logs: 查看日志。

  • docker-compose exec: 进入服务容器。

  • docker-compose run: 运行服务容器。

Docker Compose 的优点包括

  1. 简化应用部署:使用 Docker Compose 可以轻松地部署多个服务应用程序,而无需手动编写 Dockerfile 或使用 Docker 命令来创建和启动容器。

  2. 提高应用可移植性:使用 Docker Compose 可以轻松地将应用程序部署到不同的环境中,如开发、测试和生产环境,而无需手动修改配置文件或重新部署。

  3. 支持动态扩展:使用 Docker Compose 可以根据需要启动或停止多个容器实例,以应对流量高峰或资源瓶颈等情况。

  4. 管理多个服务:使用 Docker Compose 可以轻松地管理多个服务之间的依赖关系和通信,确保服务在正确的顺序下启动,并提供一致的管理接口。

总之,Docker Compose 是一个非常方便的工具,可以帮助开发人员轻松地部署和管理 Docker 应用程序。

2. Docker和Docker Compose安装

Docker是一个容器化平台,可以使用docker命令来管理和部署容器。而docker-compose则是一个用于定义和运行多容器Docker应用程序的工具。具体而言,docker-compose是基于YAML文件的,它可以在一个配置文件中定义多个服务,每个服务可以包括多个容器,同时还可以指定容器之间的依赖关系和网络配置等。

相比之下,使用docker命令只能启动一个容器,而且需要手动设置端口映射和环境变量等参数。而使用docker-compose则可以更加灵活地管理多容器应用,可以在一个配置文件中定义多个服务,容器之间的网络和依赖关系也可以更加方便地配置。此外,docker-compose还支持自动化的容器编排和扩展,可以快速地启动和停止多个容器,并进行容器间的通信。

在 CentOS 系统上安装较新版本的 Docker 可以通过以下步骤进行:

1. 卸载旧版本的 Docker(如果已安装):

sudo yum remove docker docker-common docker-selinux docker-engine

2. 安装 Docker 所需的依赖包:

yum install -y yum-utils device-mapper-persistent-data lvm2

这个命令是在 CentOS 系统上安装 Docker 所需的一些依赖包。下面是这些依赖包的简要说明:

  • yum-utils:这是一个 YUM 工具集,包含了一些方便的工具,如 yum-config-manager、yumdownloader 等,用于管理和配置 YUM 软件包管理器。

  • device-mapper-persistent-data:这是 Docker 使用的一个依赖库,提供了持久化存储的设备映射功能,用于在容器和宿主机之间进行数据存储的映射。

  • lvm2:这是 Linux 逻辑卷管理器 (LVM) 的一个工具集,允许对物理存储设备(如硬盘)进行逻辑卷的管理,用于在 Docker 中创建和管理容器的文件系统。

这些依赖包是安装 Docker CE(社区版)时需要的前置条件,通过执行该命令,可以一次性安装这些依赖包,以确保 Docker 在 CentOS 系统上能够正常运行。参数 -y 表示在安装过程中自动应答 "yes",以避免出现提示等待用户确认的情况。

3. 添加 Docker 的官方仓库:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. 执行以下命令更新软件包缓存:

yum makecache

5. 安装 Docker CE(社区版):

yum install docker-ce

6. 启动 Docker 服务并设置开机自启动:

sudo systemctl start docker
sudo systemctl enable docker

7. 验证 Docker 是否安装成功:

sudo docker version

下面这个命令会列出在系统中已经安装的所有软件包,并通过 grep 过滤出包含 "docker" 关键字的软件包。如果输出中包含类似 "docker" 或者 "docker-engine" 等相关的软件包名称,则表示系统中安装了 Docker。 

sudo yum list installed | grep docker

 也可以通过以下命令检查 Docker 服务的运行状态,看是否有Docker 服务在运行:

sudo systemctl status docker

以上步骤将在 CentOS 系统上安装 Docker CE 的最新版本。你可以通过 sudo docker version 命令来验证 Docker 是否成功安装,并查看当前安装的版本信息。

sudo docker run hello-world

docker run hello-world 是一个 Docker 命令,用于在 Docker 上运行一个名为 "hello-world" 的容器。这是一个简单的 Docker 示例应用程序,用于测试 Docker 是否正确安装并能够正常工作。

具体而言,docker run 命令用于在 Docker 上运行一个容器,hello-world 是一个容器镜像的名称。当您运行这个命令时,Docker 将从 Docker Hub(Docker 的官方容器镜像仓库)中下载 "hello-world" 镜像,并在容器中运行它。

"hello-world" 容器只是一个简单的示例,它并不做任何有用的工作,仅仅输出一条 "Hello from Docker!" 的消息,并显示 Docker 版本信息。通过运行 docker run hello-world,您可以验证 Docker 是否已正确安装并能够正常运行,以及验证 Docker 容器的基本使用流程。如果一切顺利,您应该会在命令输出中看到 "Hello from Docker!" 的消息,表示 Docker 已经成功安装并可以运行容器。 

注意:这只是一种安装 Docker 的方法,Docker 的版本可能会随时间变化,请确保在安装时使用了最新的官方文档或官方网站上提供的安装方法。

在 CentOS 系统上安装较新版本的 Docker Compose 可以通过以下步骤进行:

1. 下载 Docker Compose 的二进制文件:

最新的Docker Compose 的Github下载链接地址是 https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64

在您的 CentOS 系统中使用 curl 命令下载 Docker Compose 文件。例如,对于 v2.17.3 版本的 Docker Compose,可以使用以下命令:

sudo curl -L https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

上面这个命令是用于从 Docker Compose 的 GitHub 仓库下载 Docker Compose 的二进制文件,并将其保存到 /usr/local/bin 目录下。具体解释如下:

sudo curl -L "https://github.com/docker/compose/releases/download/<VERSION>/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • sudo: 使用超级用户权限执行命令,因为需要在系统的 /usr/local/bin 目录下进行文件操作,需要管理员权限。
  • curl: 是一个用于在命令行中进行 URL 请求和数据传输的工具。
  • -L: 选项告诉 curl 跟随重定向。
  • "https://github.com/docker/compose/releases/download/<VERSION>/docker-compose-$(uname -s)-$(uname -m)": 是 Docker Compose 的下载链接,其中 <VERSION> 部分应替换为你想要安装的 Docker Compose 版本号。$(uname -s)$(uname -m) 是 shell 命令,用于获取当前系统的操作系统类型和处理器架构,这样下载的二进制文件会根据当前系统自动选择对应的版本。
  • -o /usr/local/bin/docker-compose: 指定下载的文件保存到 /usr/local/bin 目录下,并命名为 docker-compose

通过执行这个命令,将会从 Docker Compose 的 GitHub 仓库下载指定版本的 Docker Compose 二进制文件,并保存到 /usr/local/bin 目录下,使其可以在系统中被执行和调用。

2. 授权二进制文件

sudo chmod +x /usr/local/bin/docker-compose

3. 创建软链接

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4. 验证安装

docker-compose --version

运行以上命令后,如果能够显示安装的 Docker Compose 版本号,则表示安装成功。

这样,你就在 CentOS 系统中成功安装了 Docker Compose,可以使用 docker-compose 命令来管理 Docker 容器编排。请注意,Docker Compose 是用于管理多个 Docker 容器的工具,用于简化容器编排配置和管理。在使用 Docker Compose 之前,确保已经安装并正常运行了 Docker。

3. Docker启动容器

1. 在 Docker 中启动一个交互式的 Ubuntu 容器,并在其中运行 Bash shell 的命令。

docker run -it ubuntu bash

具体来说,命令中的参数含义如下:

  • docker run: 运行一个 Docker 容器
  • -it: 分别表示两个选项 -i-t,其中 -i 表示让容器的标准输入保持打开, -t 表示为容器分配一个伪终端(pseudo-tty),这两个选项结合在一起可以启动一个交互式的容器。
  • ubuntu: 表示要运行的容器的镜像,这里使用的是 Ubuntu 镜像。
  • bash: 表示在容器中要运行的命令,这里使用的是 Bash shell。

因此,这个命令会启动一个交互式的 Ubuntu 容器,并在其中运行 Bash shell。启动后,您可以在容器中使用 Bash 命令行交互,并执行各种操作。在退出 Bash shell 并关闭容器时,您可以使用 exit 命令或者在容器窗口中使用 Ctrl-D 来完成。

2. 该命令用于列出所有已经创建的容器(包括已经停止的容器)。

docker ps -a

3. 当 Docker 容器被停止或退出时,您可以使用 docker start 命令重新启动它。

docker start <container-id>

停止某个容器的运行 

docker stop <container-id>

 4. 如果您想要在重新启动的容器中执行命令,可以使用 docker exec 命令。

docker exec -it <container-id> bash

其中 -it 参数允许您在容器中交互式地运行一个 bash shell,这样您就可以执行您需要的命令了。

请注意,如果容器在启动时遇到问题,您可以使用 docker logs 命令查看容器的日志,以帮助您诊断问题。例如:

docker logs <container-id>

这将输出容器的日志信息,您可以根据其中的提示来排除问题。

5. 在 Ubuntu 容器内创建的文件夹默认是存储在容器的文件系统中的,而不是主机的文件系统中。

如果需要将容器内的文件复制到主机上,可以使用 docker cp 命令。具体步骤如下:

(1)在主机上创建一个目录,用于存放从容器中复制出来的文件:

mkdir /path/to/host/folder

(2)最后使用以下命令将容器内的文件复制到主机上的目录中,其中 <container_name_or_id> 替换为步骤 1 中获取到的容器名称或 ID,/path/to/container/folder 替换为容器内的文件夹路径,/path/to/host/folder 替换为主机上的目录路径:

docker cp <container_name_or_id>:/path/to/container/folder /path/to/host/folder

执行完毕后,就可以在主机上的指定目录中找到从容器中复制出来的文件夹了。

4. chatgpt私有化部署

 1. 在云服务器中创建一个目录用于存放docker-compose.yml文件

mkdir chatgpt
cd chatgpt

2. 在chatgpt目录下创建一个docker-compose.yml文件,并将以下内容复制到文件中: 

version: '3'services:chatgpt:image: miclon/chatgpt:latestcontainer_name: chatgptports:- "8000:8000"environment:# 填写你的 API_KEY- API_KEY=sk-xxxxxx# 填写API请求代理地址- HTTPS_PROXY=http://192.168.1.17:7890

这个部分定义了我们要部署的应用程序及其相关配置。在这个例子中,我们只有一个服务,名为chatgpt,它使用了miclon/chatgpt镜像的最新版本(latest)。container_name属性指定了Docker容器的名称为chatgptports属性将Docker容器内部的8000端口映射到主机的8000端口上,以便我们可以通过主机访问该容器中的应用程序。

最后,environment属性指定了应用程序所需要的环境变量。在这个例子中,我们需要填写API_KEYHTTPS_PROXY两个环境变量,它们将在Docker容器运行时被自动设置。其中,API_KEY环境变量需要填写我们自己的密钥,而HTTPS_PROXY环境变量则指定了我们所使用的HTTP代理服务器的地址和端口号。 

请注意,如果你没有使用HTTP代理服务器,或者你所使用的网络环境并不需要使用代理服务器,那么你可以将HTTPS_PROXY环境变量设置为空字符串,例如:

environment:- HTTPS_PROXY=

 3. 启动docker-compose服务 在chatgpt目录下运行以下命令启动docker-compose服务:

sudo docker-compose up -d

要使用 docker-compose 命令停止一个容器,您可以使用以下命令: 

该命令将会根据docker-compose.yml文件启动chatgpt服务,并将其运行在后台模式。

docker-compose stop <service-name>

其中 <service-name> 是 Docker Compose 文件中定义的服务名称。这将会停止指定服务的容器,并保留其状态。

需要在yml文件所在的目录下执行docker-compose命令。这是因为docker-compose命令会读取当前目录下的docker-compose.yml文件,并且使用该文件来创建、启动、停止和删除容器等操作。如果不在yml文件所在的目录下执行docker-compose命令,则无法正确识别和使用yml文件。

4. 确认服务已启动 运行以下命令,确认chatgpt服务已经启动:

sudo docker-compose ps

该命令将会列出当前运行的docker-compose服务,如果chatgpt服务正在运行,将会显示服务状态为"Up"。

CONTAINER ID   IMAGE                   COMMAND                CREATED         STATUS                       PORTS                                       NAMES
38f13a3ce0df   miclon/chatgpt:latest   "/bin/bash start.sh"   8 seconds ago   Up 6 seconds                 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   chatgpt-u5a1
3622f0430f39   miclon/chatgpt:latest   "/bin/bash start.sh"   24 hours ago    Exited (137) 3 minutes ago                                               chatgpt
f74e6eb974b4   ubuntu                  "bash"                 28 hours ago    Exited (137) 24 hours ago                                                busy_ganguly
9d464ee54c09   hello-world             "/hello"               28 hours ago    Exited (0) 24 hours ago                                                  wizardly_almeida
405719ccf04b   hello-world             "/hello"               41 hours ago    Exited (0) 41 hours ago                                                  priceless_ritchie

docker-compose ps -a命令将列出Docker Compose文件中定义的所有服务以及它们的容器的详细信息,包括正在运行的容器以及已经停止的容器。下面是一些可能会显示的信息:

  • Name: 服务名称。
  • Command: 在容器内运行的命令。
  • State: 容器的状态,如runningexitedrestarting等。
  • Ports: 容器暴露的端口以及它们映射到主机的端口。
  • Health: 容器的健康状态,包括健康检查的结果和最后一次检查的时间戳。
  • Exit Code: 容器最后一次退出的状态代码。
  • Image: 服务使用的镜像名称。
  • Created: 容器创建的时间戳。
  • Status: 服务的状态,如UpExitedRestarting等。

在输出中,容器的状态用UpExited等关键字表示,State列中的Exit Code列出了容器最后一次退出的状态代码。

5. 如果chatgpt服务在云服务器的本地8000端口上运行,则你可以通过在服务器的终端中输入服务器的公共IP地址或域名后加上端口号8000来访问该服务。

curl http://localhost:8000

 访问结果如下

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8" /><link rel="icon" type="image/svg+xml" href="/vite.svg" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>ChatGPT</title><script type="module" crossorigin src="/assets/index-4105e0ac.js"></script><link rel="stylesheet" href="/assets/index-a3673006.css">
</head><body><div id="app"></div></body></html>

6. 修改nginx配置文件实现通过域名(https://domain.com)访问

如果您想保持容器路径不变,并希望nginx代理的路径与容器路径保持一致,可以将nginx配置文件中的location块中的路径修改为/,例如:

location / {proxy_pass http://127.0.0.1:8000/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";
}

这段代码是Nginx配置文件中的一个location块,它定义了一个反向代理服务器,将所有的请求都转发到指定的地址 http://127.0.0.1:8000/。

下面是每个指令的含义:

  • proxy_pass http://127.0.0.1:8000/;:将请求转发到 http://127.0.0.1:8000/ 地址。

  • proxy_set_header Host $host;:将客户端请求的 Host 头部信息传递给后端服务器。

  • proxy_set_header X-Real-IP $remote_addr;:将客户端真实 IP 地址传递给后端服务器。

  • proxy_set_header X-Forwarded-Proto $scheme;:将客户端请求的协议传递给后端服务器。

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:将客户端请求的 IP 地址和 X-Forwarded-For 头部信息传递给后端服务器。

  • proxy_set_header Upgrade $http_upgrade;:将请求的升级头部信息传递给后端服务器。

  • proxy_set_header Connection "upgrade";:将请求的连接头部信息传递给后端服务器。

这段代码的作用是将所有的请求转发到 http://127.0.0.1:8000/,并将客户端请求的相关信息传递给后端服务器。

该项目地址:GitHub - mic1on/chatGPT-web: chatGPT私有化部署

如果您想允许 IP 地址以 162.158.63. 开头的所有 IP 段访问,您可以按照以下方式修改 location /

location / {# 允许 IP 地址以 162.158.63. 开头的所有 IP 段访问allow 162.158.63.0/24;deny all;# 设置反向代理proxy_pass http://127.0.0.1:8000/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";
}

如果location仅为 /,则表示匹配所有请求,并将其映射到配置文件中指定的根目录下。这通常是指定根目录的默认方式,同时也可以在该location块中设置其他具体的处理方式和指令。需要注意的是,在配置文件中应该将最精确的匹配放在前面,以便尽早地处理对应的请求。

7. 如果您想要完全删除服务的容器,可以使用 docker-compose down 命令。例如,如果您要停止名为 web 的服务的容器,您可以使用以下命令:

docker-compose stop web

如果您想要停止 Docker Compose 文件中定义的所有服务的容器,您可以使用以下命令:

docker-compose stop

这将会停止 Docker Compose 文件中定义的所有服务的容器,并保留其状态。请注意,此命令仅停止容器,而不会删除它们。如果您想要完全删除服务的容器,请使用 docker-compose down 命令。

5. docker-compose.yml文件模板

Docker Compose 中的服务名称必须是唯一的。如果您尝试创建两个名称相同的容器,则会导致启动失败,并显示一个错误消息,指示服务名称已经存在。在 Docker Compose 文件中,每个服务都必须具有唯一的名称,以便能够引用它们并在整个应用程序中进行区分。

下面是一个简单的docker-compose.yml文件模板: 

version: '3'  # 版本号services:    # 定义各个服务service1:  # 服务名称image: image1  # 服务所用镜像名称ports:        # 暴露的端口- "8080:80"volumes:      # 挂载的卷- ./data:/dataenvironment:  # 环境变量- ENV_VAR1=value1- ENV_VAR2=value2service2:image: image2ports:- "8081:80"volumes:- ./logs:/logsenvironment:- ENV_VAR1=value1- ENV_VAR3=value3networks:  # 定义各个网络network1:  # 网络名称driver: bridge  # 网络类型volumes:  # 定义各个卷data:  # 卷名称driver: local  # 卷类型

该模板包含以下主要部分:

  • version: 定义Docker Compose文件格式版本号,目前最新版本是3。
  • services: 定义各个服务,每个服务可以包含一个或多个容器。
  • networks: 定义各个网络,服务可以连接到其中一个或多个网络。
  • volumes: 定义各个卷,服务可以挂载其中一个或多个卷。

每个服务包含以下信息:

  • image: 服务所使用的镜像名称。
  • ports: 暴露容器内部的端口,并映射到主机的端口。
  • volumes: 挂载宿主机上的目录或文件到容器内部的目录。
  • environment: 定义环境变量。

此外,还可以使用其他选项来定义各种其他配置,例如restarthealthcheck等。

6. 结合tg的chatgpt私有化部署

项目地址:https://github.com/karfly/chatgpt_telegram_bot

将这个GitHub项目克隆到CentOS云服务器中,可以按照以下步骤操作:

1. 在CentOS云服务器上安装Git工具,如果还没有安装的话,可以运行以下命令:

sudo yum install git

使用Git命令克隆该项目到你的CentOS云服务器中:

git clone https://github.com/karfly/chatgpt_telegram_bot.git

2. 获取 OpenAI API key

3. 获取Telegram bot token from @BotFather

  1. 打开Telegram并向 BotFather 发送 /start 命令
  2. 发送 /newbot 命令,并给你的机器人起一个名字
  3. 给你的机器人取一个唯一的用户名以_bot结尾
  4. BotFather 会生成一个 Token,复制下来保存好,这个 Token 是和你的机器人绑定的密钥,不要泄露给他人!
  5. 稍后在yml文件的设置里 将这个 Token 填入 telegram_token变量中

4. 编辑 config/config.example.yml 设置token,key和allowed_telegram_username, 执行下面两个命令 (if you're advanced user, you can also edit config/config.example.env):

mv config/config.example.yml config/config.yml
mv config/config.example.env config/config.env

 config.example.env

# local path where to store MongoDB
MONGODB_PATH=./mongodb
# MongoDB port
MONGODB_PORT=27017# Mongo Express port
MONGO_EXPRESS_PORT=8081
# Mongo Express username
MONGO_EXPRESS_USERNAME=username
# Mongo Express password
MONGO_EXPRESS_PASSWORD=password

config.example.yml 

telegram_token: "123456789:AAEOmlF3J6f3Dic5DaUIC8123456789"    # tgChat_bot
openai_api_key: "sk-3TXXmxq9gMABqiiwpx28T3BlbkFJsEabcdefg"  # u2a1
use_chatgpt_api: true
allowed_telegram_usernames: ["@Kabc123456"]  # if empty, the bot is available to anyone. pass a username string to allow it and/or user ids as integers
new_dialog_timeout: 600  # new dialog starts after timeout (in seconds)
return_n_generated_images: 1
n_chat_modes_per_page: 5
enable_message_streaming: true  # if set, messages will be shown to user word-by-word# prices
chatgpt_price_per_1000_tokens: 0.002
gpt_price_per_1000_tokens: 0.02
whisper_price_per_1_min: 0.006

4. 🔥 And now run:

docker-compose --env-file config/config.env up --build

要将docker-compose命令在后台运行,可以使用-d--detach选项。因此,修改后的命令如下: 

docker-compose --env-file config/config.env up --build -d

运行该命令后,docker-compose将在后台构建和启动容器。可以使用docker ps命令来查看容器是否正在运行。如果需要停止容器,可以使用docker-compose down命令。

参考资料

Docker: Accelerated, Containerized Application Development

Releases · docker/compose · GitHub

GitHub - mic1on/chatGPT-web: chatGPT私有化部署

GitHub - karfly/chatgpt_telegram_bot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4687.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未能成功加载扩展程序_该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的解决办法...

1.将下载的文件解压&#xff0c;得到.crx和其它几个文件 2.将该文件后缀改成rar 3.然后再次解压这个rar文件 就会得到很多个js、html等文件&#xff0c;其实你已经成功了&#xff0c;这样&#xff1b; 其实本来crx是一个文件添加不能用&#xff0c;但是转成rar在解压就是多个文…

油猴插件安装和使用

一.安装油猴 进入油猴的官网Greasy Fork&#xff0c;下载你对应浏览器的版本例如我谷歌浏览器下载的是这个Tampermonkey.crx&#xff1b; 下载好后&#xff0c;谷歌浏览器中&#xff0c;打开更多工具——扩展程序&#xff0c;进入拓展程序后&#xff0c;把下载的油猴插件拖到拓…

ChatGPT易编程:你的AI编程助手使用指南

目录 1. 安装和注册 2. 功能介绍 3. 如何使用 4. 技术支持 5. 常见问题 可以画软件工程或工程设计中的图吗&#xff1f; ChatGPT分析代码的过程和人分析代码的过程相似吗&#xff1f;&#xff08;答案由GPT4给出&#xff09; ChatGPT易编程&#xff0c;作为一款强大的AI…

chatglm+langchain

目录 chatglmlangchain 1.1. 主要功能&#xff1a; 1.2. Langchain中提供的模块 1.3. Langchain应用场景 2.1. chatglm应用&#xff1a; 1.1. 基于单一文档问答的实现原理 chatglmlangchain GitHub - imClumsyPanda/langchain-ChatGLM: langchain-ChatGLM, local knowledge bas…

android监听短信发送和接收

文章目录 目录 一、MainActivity和activity_main 二、创建service和util类 三、配置manifest 一、MainActivity和activity_main import androidx.appcompat.app.AppCompatActivity;import android.content.ContentResolver; import android.content.Intent; import android.con…

为什么银行卡收不到消息服务器,你为什么收不到银行短信?

原标题&#xff1a;你为什么收不到银行短信&#xff1f; 银行卡想必大家都不陌生&#xff0c;现在的人手中基本上都会有个三五张银行卡&#xff0c;大家在去银行办理手续的时候一般都会开通短信提醒&#xff0c;以方便大家对资金进行掌控。 但是你有没有发现过这样一个现象&…

短信开发:收不到短信通知的解决办法

在应用、网站平台、APP软件的通知场景中&#xff0c;短信通知以其廉价、稳定、高效、直达等优势&#xff0c;成为企业的首选方式&#xff1b;但是&#xff0c;短信通知也存在一些问题&#xff0c;如&#xff1a; 1、短信被手机客户端软件拦截&#xff0c;进入垃圾箱&#xff1b…

警惕!爆火的ChatGPT 暗藏的安全隐患 数字信息的未来

近段时间以来&#xff0c;ChatGPT 在各大平台网站是刷屏一般的存在&#xff0c;随之而来的各式各样的赞美与吁叹&#xff0c;更是不断地勾起人们的好奇心理。但在几天铺天盖地式的营销之后&#xff0c;ChatGPT 的舆论在2月7日晚的舆论风口就发现了极大的转变&#xff0c;各平台…

从中台模式的式微,到ChatGPT的兴起

LLM如ChatGPT近期红的发紫&#xff0c;一线研发人员都感到了巨大的机会和危机感。但本文打算另辟蹊径&#xff0c;探讨这类技术&#xff0c;对互联网公司算法研发架构上的影响。 本文试图回答两个问题&#xff1a;近两年中台模式&#xff0c;尤其是算法中台逐渐地淡出。其背后原…

ChatGPT商业版源码共享

安装教程: 一台VPS 搭建宝塔 解析域名 上传程序至根目录 访问首页在线安装配置数据库 PHP版本选择:7.3 安装完成后访问网站首页即可&#xff01; 配置APIKEY&#xff0c;登录网站后台自定义配置&#xff0c;不然网站无法使用&#xff01; 网站后台地址/admin 默认账号…

ChatGPT与教育系列(一、ChatGPT)

未来已来&#xff0c;拥抱变化&#xff0c;拥抱未来 一、ChatGPT 1、ChatGPT定义 ChatGPT&#xff08;Chat Generative Pre-trained Transformer&#xff09;翻译成&#xff1a;聊天生成式预训练转换器&#xff0c;其中&#xff0c;“Chat Generative”表示聊天生成式&#x…

AI工程师岗位的崛起;一线创业者的观察与预测;微软生成式AI技能专业证书;使用ChatGPT创建App | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 全球人工智能指数&#xff1a;首个全面衡量投资、创新和实施水平的指数 6月28日&#xff0c;美国科技媒体 Tortoise 发布了第4版「全球…

ChatGPT官方App推出后,5项重点整理总结

ChatGPT 自从在年初推出以来&#xff0c;一直都只有提供网页版的服务&#xff0c;虽然有许多第三方的外挂或是开发者自行串接 OpenAI 的 API 开发出 ChatGPT 的 App 或是电脑版应用程序&#xff0c;但这些都不是 OpenAI 官方所推出的版本。 而 OpenAI 在正式宣布 ChatGPT 的官方…

狂飙,ChatGPT 官方 APP 突然上线了!

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 今天凌晨&#xff0c;OpenAI 正式在 App Store 推出了 ChatGPT 的 iOS app。 瞬间冲上苹果商店免费榜第二名&#xff0c;效率榜第一名。 ChatGPT 的真「iPhone 时刻」来…

把中国法律法规喂给 ChatGPT = AI 法律助手

关于ChatGPT的各种工具层出不穷&#xff0c;AI写作、AI绘画这些已经卷成x了&#xff0c;今天给大家开个新眼界。 下面这位大佬把中国法律法规投喂给ChatGPT&#xff0c;做了一个&#xff1a;中国法律AI助手 一起看看演示&#xff1a; 离婚需要双方同意吗&#xff1f; AI&#x…

使用PyQt6编写的ChatGpt程序

最近ChatGpt挺火的&#xff0c;闲来无事在家使用Python的PyQt6库写了一个调用ChatGpt的GUI程序。记住无论如何调用ChatGpt&#xff0c;一定要先安装openai库。 pip3 install openai 下面直接晒代码吧&#xff1a; import sys from PyQt6.QtWidgets import (QWidget, QLabel,…

chatgpt赋能python:Python实现语音说话代码

Python实现语音说话代码 在最近的几年中&#xff0c;语音技术的发展为我们带来了许多便利。Python作为编程语言中的一支热门&#xff0c;也在这个领域担任了重要角色。在本文中&#xff0c;我们将介绍如何使用Python来实现语音说话代码。 为什么使用Python&#xff1f; Pyth…

人工智能交互革命:探索ChatGPT的无限可能-前言

随着人工智能的快速发展&#xff0c;交互方式的变革正在深刻地改变着我们的生活方式。人们正在越来越多地使用语音助手、智能家居等新型交互方式&#xff0c;而在这个领域中&#xff0c;自然语言生成技术正在扮演着越来越重要的角色。 在自然语言生成技术领域中&#xff0c;Ch…

ChatGPT: 交互式AI助手为互联网用户带来全新体验

目录 概述&#xff1a; 优势&#xff1a; 挑战&#xff1a; 未来发展方向&#xff1a; 概述&#xff1a; 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以惊人的速度改变着我们的生活方式和体验方式。AI 的应用范围越来越广泛&#xff0c;从语音助手到…

使用Python开发ChatGPT AI工具助手(ChatCatsy):4天快速开发指南

引言&#xff1a; ChatGPT是一种基于人工智能的对话生成模型&#xff0c;它可以用于开发聊天机器人、虚拟助手等应用。本教程将指导您在3天内使用Python开发一个ChatGPT AI工具助手。无需担心&#xff0c;即使您是初学者&#xff0c;也可以轻松跟随本指南完成项目。 第一天&a…