编辑
2025-02-25
Docker
00

目录

Docker 容器使用指南
一、引言
二、获取 Docker
三、使用 searxng/searxng 镜像
3.1 创建并进入实例目录
3.2 设置端口环境变量
3.3 拉取并运行镜像
3.4 访问实例
3.5 容器管理命令
3.6 进入容器 shell
四、构建镜像
五、命令行

Docker 容器使用指南

大模型集成 LobeChat

大模型工具使用,需要设定返回格式新增一个JSON

编辑 settings.yml 找到 formats 在下面添加:

sh
formats: - html - json

一、引言

如果你打算使用 Docker 创建公共实例,推荐使用维护良好的 searxng/searxng @dockerhub 镜像。该 Docker 容器的源托管于 searxng - docker,容器内包含一个 HTTPS 反向代理(caddy)和一个 Redis 数据库。容器还对 SearXNG 进行了一系列配置,如启用限制器保护以防机器人攻击、启用图像代理以更好保护隐私、启用缓存破坏以节省带宽等。

原文Blog:https://docs.searxng.org/admin/installation-docker.html

二、获取 Docker

在打算自己构建和维护一个 Docker 镜像前,确保已经安装了 Docker。在 Linux 系统上,不要忘记将你的用户添加到 docker 组中(注销并重新登录以重新评估组成员身份),执行命令:

bash
sudo usermod -a -G docker $USER

三、使用 searxng/searxng 镜像

该 docker 镜像基于 git://Dockerfile,并可在 searxng/searxng @dockerhub 处获取。使用该 Docker 镜像非常简单,以下是拉取并部署本地实例的步骤:

3.1 创建并进入实例目录

bash
mkdir my-searxng cd my-searxng

3.2 设置端口环境变量

bash
export PORT=8080

3.3 拉取并运行镜像

bash
docker run --rm \ -d --name searxng -p ${PORT}:8080 \ -v "${PWD}/searxng:/etc/searxng" \ -e "BASE_URL=http://localhost:${PORT}/" \ -e "INSTANCE_NAME=my-searxng" \ searxng/searxng

上述命令中,-d 表示以后台模式运行容器,-p 用于端口映射,-v 实现主机与容器之间的目录挂载,-e 用于设置环境变量。

也可以直接配置好:

bash
# 创建目录 mkdir -p /root/searxng # 启动docker docker run --rm \ -d --name searxng -p 8001:8080 \ -v "/root/searxng:/etc/searxng" \ -e "BASE_URL=http://123.45.67.89:8001/" \ -e "INSTANCE_NAME=my-searxng" \ searxng/searxng

别忘了去防火墙将指定映射的端口开启

js
--rm 在容器退出时自动清理 -d start detached container -v mount volume HOST:CONTAINER

此外:如果你希望 SearXNG 能够通过外网访问,BASE_URL 应该设置为你的公网 IP 地址或域名,而不是 localhost。这是因为 BASE_URLSearXNG 用来生成绝对 URL(例如链接、重定向等)的基础地址

bash
# 示例,若你的公网IP是123.45.67.89 -e "BASE_URL=http://123.45.67.89:8001/" # 示例,若你已经配置了域名映射是http://searxng.example.com -e "BASE_URL=http://searxng.example.com"

3.4 访问实例

环境变量 UWSGI_WORKERSUWSGI_THREADS 覆盖了 /etc/searxng/uwsgi.ini 中指定的 UWSGI 进程和线程的默认数量。打开 WEB 浏览器并访问网址:

bash
xdg-open "http://localhost:$PORT"

${PWD}/searxng 中,你将找到 settings.ymluwsgi.ini,可根据需要修改这些文件并重启 Docker 镜像:

bash
docker container restart <容器 ID>

3.5 容器管理命令

  • 列出运行中的容器:docker container ls
  • 列出所有容器(包括已退出的):docker container ls -a
  • 停止一个运行中的容器:docker container stop <容器 ID>
  • 删除一个容器:docker container rm <容器 ID>

如果你不再使用 Docker 并想要删除所有容器及镜像,可使用以下 prune 命令:

bash
docker stop $(docker ps - aq) # stop all containers docker system prune # make some housekeeping docker rmi - f $(docker images - q) # drop all images

不过要注意,这可能会删除所有 Docker 中的项目,而不仅仅是 SearXNG 的那些。

3.6 进入容器 shell

像许多其他发行版一样,Alpine 的 /bin/shdashDash 旨在符合 POSIX 标准,与 Debian 不同,在 Alpine 镜像中未安装 bashgit://dockerfiles/docker - entrypoint.sh 脚本是用 dash 检查的(make test - tests.sh)。在容器内打开终端:

bash
docker exec -it <容器 ID> sh

四、构建镜像

也可以从嵌入的 git://Dockerfile 构建 SearXNG:

bash
git clone https://github.com/searxng/searxng.git cd searxng make docker.build

构建成功后,可以使用 docker images 查看镜像信息:

bash
... Successfully built 49586c016434 Successfully tagged searxng/searxng:latest Successfully tagged searxng/searxng:1.0.0-209-9c823800-dirty $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE searxng/searxng 1.0.0-209-9c823800-dirty 49586c016434 13 minutes ago 308MB searxng/searxng latest 49586c016434 13 minutes ago 308MB alpine 3.13 6dbb9cc54074 3 weeks ago 5.61MB

五、命令行

git://Dockerfile 中,ENTRYPOINT 定义为 git://dockerfiles/docker - entrypoint.sh。使用 docker run 命令时,可以添加 -it 标志用于交互进程:

bash
docker run --rm -it searxng/searxng -h
bash
Command line: -h Display this help -d Dry run to update the configuration files. -f Always update on the configuration files (existing files are renamed with the .old suffix). Without this option, the new configuration files are copied with the .new suffix Environment variables: INSTANCE_NAME settings.yml : general.instance_name AUTOCOMPLETE settings.yml : search.autocomplete BASE_URL settings.yml : server.base_url MORTY_URL settings.yml : result_proxy.url MORTY_KEY settings.yml : result_proxy.key BIND_ADDRESS uwsgi bind to the specified TCP socket using HTTP protocol. Default value: 0.0.0.0:8080 Volume: /etc/searxng the docker entry point copies settings.yml and uwsgi.ini in this directory (see the -f command line option)"

命令行选项解释:

  • -h:显示此帮助信息。
  • -d:运行以更新配置文件(现有文件将使用 .old 后缀重命名,在不使用此选项的情况下,新配置文件将具有 .new 后缀)。 环境变量说明:
  • INSTANCE_NAMEsettings.yml 中的 general.instance_name
  • AUTOCOMPLETEsettings.yml 中的 search.autocomplete
  • BASE_URLsettings.yml 中的 server.base_url
  • MORTY_KEYsettings.yml 中的 result.proxy.key
  • BIND_ADDRESS:默认值 0.0.0.0:8888,用于使用 HTTP 协议绑定到指定 TCP 套接字。 卷说明: /etc/searxngdocker build 命令会将 settings.ymluwsgi.ini 复制到这个目录(见 -f 命令行选项)。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay