使用自定义镜像扩展Sandbox服务(1) 概述 如果您需要在同一沙箱实例中运行自己的服务(例如自定义 API、数据处理进程),可以通过扩展AIO(Base、Code Interpreter)等基础镜像的方式实现。 本文以一个简单的 Python Echo Server 为例,介绍如何将自定义服务集成到AIO沙箱中。 操作步骤 文件结构 新建一个项目目录,例如echoserver,按以下结构组织文件: plaintext echoserver/ └── server └── echoserver.py └── config/ └── echoserver.conf └── Dockerfile 步骤一:编写服务代码 创建 echoserver.py,实现一个简单的 HTTP 服务,GET 请求返回ok: plaintext !/usr/bin/env python3 import os from http.server import HTTPServer, BaseHTTPRequestHandler DEFAULTPORT 9000 class EchoHandler(BaseHTTPRequestHandler): def doGET(self): self.sendresponse(200) self.sendheader('ContentType', 'text/plain; charsetutf8') self.endheaders() self.wfile.write(b'okn') def main(): port int(os.environ.get('ECHOSERVERPORT', DEFAULTPORT)) host os.environ.get('ECHOSERVERHOST', '0.0.0.0') server HTTPServer((host, port), EchoHandler) print(f"[echoserver] Starting echo server on {host}:{port}") try: server.serveforever() except KeyboardInterrupt: server.shutdown() if name 'main': main() 步骤二:编写配置文件 配置统一使用supervisor管理,创建echoserver.conf,配置服务的启动命令、重启策略、日志等: plaintext Echo Server Supervisor 配置文件 程序定义部分 [program:echoserver] command/usr/bin/env python3 /home/user/server/echoserver.py 工作目录 directory/home/user 执行用户和组 useruser 自动管理与重启策略 是否自动启动 autostarttrue 自动重启策略 autorestartunexpected 启动重试次数 startretries3 启动成功检查时间 startsecs5 priority999 日志配置 标准输出日志文件 stdoutlogfile/var/log/supervisor/echoserver/access.log 标准错误日志文件 stderrlogfile/var/log/supervisor/echoserver/error.log 日志文件大小限制 stdoutlogfilemaxbytes50MB stderrlogfilemaxbytes50MB 日志文件备份数量 stdoutlogfilebackups10 stderrlogfilebackups10
来自: