gpt4free 如何用 docker-compose-slim.yml 部署 slim 镜像并暴露 1337 端口 Interference API
【免费下载链接】gpt4freeThe official gpt4free repository | various collection of powerful language models | opus 4.6 gpt 5.3 kimi 2.5 deepseek v3.2 gemini 3项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4free
这篇文章解决一个明确任务:在安装了 Docker 的机器上,使用 gpt4free 仓库根目录的 docker-compose-slim.yml 部署 g4f 的 slim Docker 镜像,让 OpenAI 兼容的 Interference API 通过宿主机 1337 端口访问。根据 README.md 的 Requirements & compatibility 一节,容器化部署需要 Docker,slim 镜像同时支持 x86_64 和 arm64。所有操作都在docker-compose-slim.yml所在目录(仓库根目录)执行,因为 compose 文件中的卷挂载路径是相对路径。
docker-compose-slim.yml 里各配置的作用
docker-compose-slim.yml 的完整内容如下:
services: g4f-slim: container_name: g4f-slim image: hlohaus789/g4f:latest-slim build: context: . dockerfile: docker/Dockerfile-slim volumes: - ./generated_media:/app/generated_media - ./har_and_cookies:/app/har_and_cookies ports: - '8080:8080' - '1337:8080'逐项说明:
image: hlohaus789/g4f:latest-slim是预构建的 slim 镜像;build段给出本地构建上下文(仓库根目录)和构建文件 docker/Dockerfile-slim。- 两个卷把宿主机目录挂进容器:
./generated_media和./har_and_cookies。README 的 Configuration & customization 一节说明,HAR 文件、cookies 和生成媒体会持久化在这些映射目录里,容器删除后数据不丢。 - 端口段同时映射了
8080:8080和1337:8080:两个宿主机端口都指向容器的 8080 端口。容器内进程由 docker/Dockerfile-slim 的CMD ["python", "-m", "g4f", "--port", "8080"]启动,EXPOSE 8080是唯一声明的端口,所以 1337 只是同一服务的另一个宿主机入口。README 的 Slim Docker image 一节也写明:该映射下 Interference API 走 1337。
slim 镜像本身基于python:slim-bookworm,Dockerfile 采用两阶段构建:builder 阶段安装编译工具并预装依赖,运行阶段只安装ffmpeg、flac、curl,创建一个 UID/GID 为 1000 的g4f用户(ARG G4F_USER_ID=1000),应用代码放在/app,并以该用户身份运行。
准备持久化目录
在仓库根目录执行 README Slim Docker image 一节给出的命令:
mkdir -p ${PWD}/har_and_cookies ${PWD}/generated_media chown -R 1000:1000 ${PWD}/har_and_cookies ${PWD}/generated_media这里把目录属主改为1000:1000的原因与 docker/Dockerfile-slim 对应:镜像以 UID 1000 的g4f用户运行,容器内进程需要能读写挂载进来的目录。注意docker-compose-slim.yml挂载的是相对路径./generated_media和./har_and_cookies,所以这两个目录必须和 compose 文件在同一个目录。
启动容器
在docker-compose-slim.yml所在目录执行:
docker compose -f docker-compose-slim.yml up --build加上--build时,Compose 按文件中的build段从 docker/Dockerfile-slim 本地构建镜像再启动;不加--build时则直接使用image字段,拉取hlohaus789/g4f:latest-slim预构建镜像运行。
README 还说明了一点运行特性:slim 镜像可以在启动时更新 g4f 包,并在需要时装入额外依赖,因此首次启动可能比完整镜像多花一些时间拉取内容。
如果不想使用 Compose,README 的 Slim Docker image 一节给出了等价的docker run命令,端口映射与 compose 文件一致:
docker run \ -p 1337:8080 -p 8080:8080 \ -v ${PWD}/har_and_cookies:/app/har_and_cookies \ -v ${PWD}/generated_media:/app/generated_media \ hlohaus789/g4f:latest-slim验证 1337 端口上的 Interference API
README 的 FastAPI / Interference API 与 Interference API (OpenAI-compatible) 两节给出了两个检查入口(均针对 slim docker 的 1337 映射):
- 默认端点:
http://localhost:1337/v1 - Swagger UI:
http://localhost:1337/docs
在浏览器打开http://localhost:1337/docs能看到 Swagger 页面,说明 API 服务已在 1337 端口对外提供服务。
仓库里还有现成的请求脚本 etc/testing/test_interference.py,文档示例如下:
import openai openai.api_key = "" openai.base_url = "http://localhost:1337" def main(): chat_completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "write a poem about a tree"}], stream=True, ) if isinstance(chat_completion, dict): # not stream print(chat_completion.choices[0].message.content) else: # stream for token in chat_completion: content = token["choices"][0]["delta"].get("content") if content != None: print(content, end="", flush=True) if __name__ == "__main__": main()该脚本用 openai 客户端向http://localhost:1337发起流式ChatCompletion请求并逐块打印输出;仓库中同类的 etc/testing/test_api.py 使用的base_url是http://localhost:1337/v1,与 README 给出的默认端点一致。脚本能否收到模型返回内容,即是对 1337 端口 API 的一次实际验证。
边界与限制
docker-compose-slim.yml同时映射了 8080 端口。README 说明 8080 同时承担 GUI/API 服务,因此宿主机 8080 和 1337 两个端口都要保持空闲。- docker/Dockerfile-slim 运行阶段只安装了
ffmpeg、flac、curl,未安装 Chrome/Chromium;而 README 的 Requirements 一节指出部分 provider 适配器依赖浏览器自动化工具。需要这类 provider 时,slim 镜像不是合适的运行环境。 - README 的 Security 一节给出生产建议:使用 HTTPS、认证和防火墙规则保护服务器,并限制对 provider 凭据及 cookie/HAR 存储的访问。1337 端口直接暴露 API,若部署到非本机网络,应按此处理。
部署完成的判断依据就是上面两个检查:http://localhost:1337/docs可打开 Swagger 页面,且指向http://localhost:1337/v1的客户端请求能收到模型返回。
【免费下载链接】gpt4freeThe official gpt4free repository | various collection of powerful language models | opus 4.6 gpt 5.3 kimi 2.5 deepseek v3.2 gemini 3项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4free
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考