Docker 容器中的 Telethon TelegramClient 身份验证

Telethon TelegramClient authentication in Docker container

我们有一个 script to download files from Telegram Channel, using Telethon 库用于 Python

要创建一个 Telethon 实例,我们使用 TelegramClient 构造函数。此方法要求用户将他的 Telegram 号码插入控制台,然后 Telegram 发送一个安全号码,该号码应写回控制台。

保存在Object/File/DB中的此验证名为session,因此在下一次执行时,TelegramClient不会再次询问phone号码。

现在,我想为脚本创建一个 Docker 图像,这意味着当用户从发布的图像创建容器时,他将必须进行身份验证过程,这是问题:

我们必须通过哪些方式尽可能自动地进行此身份验证?

我们可以使用 Docker 个技巧,Telegram/Telethon 个技巧,也许还有 Python 个技巧...

我会尝试提出一个解决方案。

我们可以将 session 保存在主机文件系统中,并将 session 的位置设置为 docker 容器的 volume

然后我们可以创建一个脚本来验证和创建这个会话,在容器之外,当容器启动时它已经有一个 session

您可以通过为 Docker Compose 创建一个 bind-mount for your session file plus any config data -- I recommend using something like python-dotenv. You can set this up in your Dockerfile, as well as Docker Compose. See here for the Dockerfile and here 来做到这一点。

只需确保在容器中为会话文件设置正确的路径即可。

您可以使用 StringSession 来保存和获取 Telethon 客户端的访问权限。 只需将会话生成为一个简单的字符串并将其保存在 docker 秘密中。 https://docs.telethon.dev/en/latest/concepts/sessions.html#string-sessions