Skip to content

快速参考

  • 由……维护: (注:原文中“Maintained by:”后面应该还有具体的维护者信息,但题目中未给出,所以翻译只能到此为止。)
    蛋头(Eggdrop 社区)

  • 哪里可以获得帮助:
    Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow

支持的标签及各自的 Dockerfile 链接

快速参考(续)

什么是 Eggdrop?

Eggdrop 是全球最受欢迎的开源 IRC 机器人,设计灵活且易于使用,可根据 GNU 通用公共许可证(GPL)自由分发。它可用于 Linux、BSD、SunOs、Windows 和 Mac OS X 等系统。其核心代码库可通过 TCL 脚本或 C 模块进行扩展,并且机器人可以连接形成僵尸网络,从而实现跨多个机器人共享用户文件和派对线路。

logo

如何使用此图像

首次运行

首次运行此容器时,您至少需要通过环境变量传入一个昵称和服务器。至少,类似于以下的 docker run 命令:

$ docker run -ti -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/for/host/data:/home/eggdrop/eggdrop/data eggdrop

应使用该命令。这将修改配置文件中的相应值,然后以昵称为 FooBot 启动您的机器人并将其连接到 irc.libera.chat。这些变量仅在首次运行时需要 - 首次使用后,您可以直接编辑配置文件。以下部分列出了其他配置选项。

请注意,即使在守护进程模式下,对于 docker run 也需要 -i 标志。

环境变量

SERVER

此变量设置 Eggdrop 将连接到的 IRC 服务器。示例如下:

  -e SERVER=just.a.normal.server
  -e SERVER="you.need.to.change.this 6667"
  -e SERVER="another.example.com 7000 password"
  -e SERVER="[2001:db8:618:5c0:263::] 6669 password"
  -e SERVER="ssl.example.net +6697"

请注意,指定端口或密码时,需将整个参数用引号括起来。通过环境变量只能指定一个服务器。“+”表示启用 SSL 的端口。首次运行后,建议直接编辑 eggdrop 配置以添加其他服务器(见下文“长期持久性”)。

NICK

此变量设置 eggdrop 所使用的昵称。首次使用后,您应直接通过编辑 eggdrop 配置来更改它(请参阅下面的长期持久性)。

LISTEN

此变量将设置 Eggdrop 用于监听传入连接的 TCP 端口(相当于配置中的 listen XXXX all )。如果您设置了此变量,您可能需要在 docker run 命令中调整 -p 标志以与之匹配。

EGGOWNER (仅在开发标签中可用于测试)

此变量为 Eggdrop 创建第一个账户句柄。这是您将用于登录的句柄,并且将具有完全所有者权限。如果您使用此环境变量,则还必须设置 EGGOWNER_PASS 环境变量,否则容器将无法启动。它只能在首次运行 Eggdrop 时使用。如果您提供自己的配置文件(而不是在首次运行时使用 Docker 生成的文件),则必须在配置文件的末尾添加“source scripts/docker.tcl”以启用此功能。在容器首次运行后,此变量可能会被删除。

EGGOWNER_PASS (仅在开发标签中可用于测试)

此变量为 EGGOWNER 句柄设置密码。如果未设置 EGGOWNER 环境变量而设置此变量,则不会产生任何作用。在容器首次运行后,此变量可能会被删除。

CHANNELS (仅在开发标签中可用于测试)

此变量包含 Eggdrop 在容器运行时将尝试创建的频道列表(如果它们尚不存在)。此变量的格式为逗号分隔列表(CHANNELS = #chan1, chan2, #chan3")。一旦添加了频道,此变量即可删除。

长期持久性

首次运行 eggdrop 容器后,配置文件、用户文件和频道文件都将在容器内的 /home/eggdrop/eggdrop/data/ 处可用。然而!这些文件的持久性仅与它们所在的容器相同。如果您在使用 Eggdrop Docker 映像的过程中(有意或无意)期望使用不同的容器,则需要创建一个持久数据存储。

要做到这一点,最简单的方法是将主机上的一个目录挂载到 /home/eggdrop/eggdrop/data 。如果您在首次运行之前这样做,您可以轻松地编辑此 Docker 映像在主机上的目录中生成的 eggdrop 配置文件。否则,您也可以将现有的配置、用户或频道文件放入挂载的数据目录中,以便在 eggdrop 容器中使用。

如果您使用以前的 eggdrop 安装的配置文件(即您不使用此映像生成的配置文件),请不要忘记修改用户文件和频道文件的路径以利用数据目录 - 这意味着编辑配置文件以使用 set userfile data/<userfile>set channelfile data/<channelfile> 。如果您不这样做,您的数据将不会持久保存。您可能还希望将 eggdrop 守护进程化(即在后台运行它)。

要做到这一点,使用类似于以下内容来启动您的容器

$ docker run -i -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d eggdrop

如果您提供自己的配置文件,请将其放置在数据目录中,并将其指定为 Docker 容器的参数:

$ docker run -i -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d eggdrop mybot.conf

任何与 Docker 一起使用的配置文件必须以.conf 结尾,例如 eggdrop.conf 或 mybot.conf

添加脚本

在主机上创建一个脚本目录并将其挂载到 /home/eggdrop/eggdrop/scripts (或您选择的路径),这是添加脚本的一种简单方法。这可以通过添加一个类似于以下的选项来实现

    -v /path/to/host/scripts:/home/eggdrop/eggdrop/scripts

将其添加到您的 Docker 运行命令行中(然后编辑您的配置文件,以便从与您挂载脚本目录的路径相匹配的位置加载脚本)。不建议将您的脚本目录挂载在常规的 eggdrop/scripts 路径之上,因为这会导致图像中包含的脚本无法被 Eggdrop 访问,并且在您启动 Eggdrop 时可能会给您带来错误。作为替代方案,您可以改为挂载到 /home/eggdrop/eggdrop/scripts2(或类似的路径),并确保使用新路径更新源命令。

添加脚本所需的包

许多脚本需要安装额外的操作系统软件包才能运行,例如 tcl-tls、tcl-lib 和 libsqlite3-tcl。按照 Docker 理念,基础 Eggdrop 软件包有意仅包含基础 Eggdrop 功能所需的最低要求进行打包。然而,用户在启动这样的容器时可以轻松添加软件包,如下所示:

docker run -i eggdrop sh -c 'apk add tcl-lib tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf'

暴露网络端口

如果您想为您的机器人公开网络连接,您还需要使用 -p 标志来公开您在配置中指定为监听端口的任何端口(默认是 3333)。例如,要公开 3333 端口,请添加

-p 3333:3333

到您的 Docker 运行命令行。

常见错误

docker-compose.yml

一个 docker-compose.yml 示例托管在 https://github.com/eggheads/eggdrop-docker/blob/master/docker-compose.yml 。从头开始创建自己的 docker-compose.yml 文件时的一个常见错误是未添加

stdin_open: true

到 docker-compose.yml 文件。没有它,Eggdrop 会给您一个“终端文件结束”错误且不会启动。

故障排除 / 支持

如需更多帮助,您可以加入 Libera 上的 #eggdrop 频道

用于 Dockerfile 的 git 仓库维护在 https://github.com/eggheads/eggdrop-docker 。

许可证

查看此映像中所包含软件的许可证信息。

与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 eggdrop/ 目录中找到。

对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。