
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该容器镜像包含Python 3.6,作为构建Python 3.6应用的https://github.com/openshift/source-to-image%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%E3%80%82%E7%94%A8%E6%88%B7%E5%8F%AF%E9%80%89%E6%8B%A9%E5%9F%BA%E4%BA%8ERHEL%E6%88%96CentOS%E7%9A%84%E6%9E%84%E5%BB%BA%E5%99%A8%E9%95%9C%E5%83%8F%EF%BC%9ARHEL%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8Red Hat Container Catalog获取,CentOS镜像可在https://hub.docker.com/r/centos/%E8%8E%B7%E5%8F%96%EF%BC%8CFedora%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8Fedora Registry获取。生成的镜像可使用https://github.com/containers/libpod%E6%88%96http://docker.io%E8%BF%90%E8%A1%8C%E3%80%82
注意:本文档示例中使用
podman命令,所有此类命令均可替换为docker,参数保持不变。
Python 3.6容器镜像是构建和运行各类Python 3.6应用及框架的基础平台。Python是一种易于学习、功能强大的编程语言,具有高效的高级数据结构和简洁有效的面向对象编程方法。其优雅的语法、动态类型及解释型特性,使其成为多数平台上众多领域脚本编写和快速应用开发的理想选择。
该容器镜像包含npm工具(详见https://github.com/sclorg/s2i-base-container/tree/master/base%EF%BC%89%EF%BC%8C%E7%94%A8%E6%88%B7%E5%8F%AF%E4%BD%BF%E7%94%A8%E5%85%B6%E4%B8%BAWeb%E5%BA%94%E7%94%A8%E5%AE%89%E8%A3%85JavaScript%E6%A8%A1%E5%9D%97%E3%80%82%E9%95%9C%E5%83%8F%E4%B8%AD%E5%8C%85%E5%90%AB%E7%9A%84npm%E6%88%96nodejs%E7%89%88%E6%9C%AC%E4%B8%8D%E5%81%9A%E4%BF%9D%E8%AF%81%EF%BC%8C%E7%89%88%E6%9C%AC%E5%8F%AF%E8%83%BD%E9%9A%8F%E6%97%B6%E5%8F%98%E6%9B%B4%EF%BC%8Cnodejs%E4%BB%85%E4%B8%BA%E6%94%AF%E6%8C%81npm%E5%8A%9F%E8%83%BD%E8%80%8C%E5%8C%85%E5%90%AB%E3%80%82
以下示例基于OpenShift中支持的python:3.6镜像流标签。
构建简单的https://github.com/sclorg/s2i-python-container/tree/master/3.6/test/setup-test-app%E5%BA%94%E7%94%A8%E5%8F%AF%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%E5%AE%9E%E7%8E%B0%EF%BC%9A
bashoc new-app python:3.6~https://github.com/sclorg/s2i-python-container.git --context-dir=3.6/test/setup-test-app/
在已安装https://github.com/openshift/source-to-image%E5%B7%A5%E5%85%B7%E7%9A%84%E7%B3%BB%E7%BB%9F%E4%B8%8A%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%E6%9E%84%E5%BB%BA%E5%BA%94%E7%94%A8%EF%BC%9A
bash$ s2i build https://github.com/sclorg/s2i-python-container.git --context-dir=3.6/test/setup-test-app/ <image_name> python-sample-app
其中<image_name>为从RHEL、CentOS或Fedora仓库下载或从源码构建的s2i-python镜像,例如ubi8/python-36、centos/python-36-centos7或f31/python3。
bash$ curl 127.0.0.1:8080
可在源代码仓库的.s2i/environment文件中以键值对形式设置以下环境变量:
用于从脚本文件运行应用。应指定脚本文件路径(默认值为app.sh,设为null可取消),该脚本将用于启动应用。
用于从Python脚本运行应用。应指定Python文件路径(默认值为app.py,设为null可取消),该文件将被传递给Python解释器以启动应用。
用于通过Gunicorn运行应用,详见Gunicorn文档。该变量指定WSGI可调用对象,格式为MODULE_NAME:VARIABLE_NAME,其中MODULE_NAME为模块的完整路径,VARIABLE_NAME为指定模块中的WSGI可调用对象。若未指定,Gunicorn将查找名为application的WSGI可调用对象。
若未提供APP_MODULE,run脚本将在项目中查找wsgi.py文件并使用(若存在)。
用于指定应用所在的子目录。该目录需包含wsgi.py(用于Gunicorn)或manage.py(用于Django)。若未提供,assemble和run脚本将使用应用根目录。
指向有效的Python文件路径,该文件包含Gunicorn配置。
设为非空值可禁止在运行生成的镜像时执行manage.py migrate。仅影响Django项目。关于在OpenShift环境中如何/何时运行数据库迁移,详见OpenShift博客的Django应用迁移文章,尤其注意:从两个或多个Pod运行数据库迁移可能导致数据库损坏。
设为非空值可禁止在构建过程中执行manage.py collectstatic。仅影响Django项目。
设为非空值可跳过setup.py脚本处理,适用于在requirements.txt中使用-e .触发处理或不希望应用安装到site-packages目录的场景。
设为非空值可使用https://github.com/pypa/pipenv%EF%BC%88%E9%AB%98%E7%BA%A7Python%E6%89%93%E5%8C%85%E5%B7%A5%E5%85%B7%EF%BC%89%E7%AE%A1%E7%90%86%E5%BA%94%E7%94%A8%E4%BE%9D%E8%B5%96%E3%80%82%E9%9C%80%E9%A1%B9%E7%9B%AE%E4%B8%AD%E5%8C%85%E5%90%AB%E6%A0%BC%E5%BC%8F%E6%AD%A3%E7%A1%AE%E7%9A%84%60Pipfile%60%E5%92%8C%60Pipfile.lock%60%E3%80%82
与ENABLE_PIPENV一起使用,指定Pipenv版本。若未设置,将安装PyPI上的最新稳定版。例如PIN_PIPENV_VERSION=2018.11.26将安装pipenv==2018.11.26。
设为非空值可使用https://github.com/thoth-station/micropipenv%EF%BC%88%E8%BD%BB%E9%87%8F%E7%BA%A7pip%E5%8C%85%E8%A3%85%E5%99%A8%EF%BC%89%EF%BC%8C%E6%94%AF%E6%8C%81%60requirements.txt%60%E3%80%81Pipenv%E5%92%8CPoetry%E9%94%81%E6%96%87%E4%BB%B6%EF%BC%8C%E6%88%96%E8%BD%AC%E6%8D%A2%E4%B8%BApip-tools%E5%85%BC%E5%AE%B9%E8%BE%93%E5%87%BA%E3%80%82%E4%BB%85%E9%80%82%E7%94%A8%E4%BA%8EPython 3镜像。
设为非空值可使用init包装器,适用于无法回收僵尸进程的服务器(如Django开发服务器或Tornado)。可与APP_SCRIPT或APP_FILE一起使用,不适用于通过APP_MODULE使用的Gunicorn(Gunicorn可正确回收僵尸进程)。
设置自定义索引URL或镜像,用于在构建过程中下载依赖包(影响requirements.txt中列出的包)。也影响pipenv、micropipenv的安装及容器中pip的更新,若自定义索引中未找到,容器将尝试从上游PyPI安装/更新。
设为非空值可在安装任何Python包前将pip及相关Python包(setuptools、wheel)升级到最新版本。若未设置,将使用平台为当前Python版本提供的默认版本。
用于修改工作进程数的默认设置。默认值为可用核心数×2(上限为12)。
现有Python项目仓库无需修改,但以下文件将影响构建过程:
使用pip安装的依赖列表,格式详见pip文档。
requirements.txt的替代方案,项目设计与开发详见https://github.com/pypa/pipfile%E3%80%82%E9%9C%80%E8%AE%BE%E7%BD%AE%60ENABLE_PIPENV%60%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E4%BB%A5%E5%A4%84%E7%90%86%E8%AF%A5%E6%96%87%E4%BB%B6%E3%80%82
配置项目各方面(包括依赖安装),详见打包文档。多数项目使用requirements.txt或Pipfile即可。设DISABLE_SETUP_PY_PROCESSING环境变量为true可跳过处理该文件。
s2i-python生成的容器镜像按以下优先级顺序执行项目:
若安装了Gunicorn(通过requirements.txt或setup.py的install_requires部分列出),将使用Gunicorn WSGI HTTP服务器提供应用服务。
若仓库中存在wsgi.py文件(Django项目默认包含),将作为应用入口点,可通过APP_MODULE环境变量覆盖。
若依赖中同时包含Django和Gunicorn,Django项目将自动通过Gunicorn提供服务。
若依赖中包含Django但未包含Gunicorn,将使用Django开发服务器提供应用服务。不推荐用于生产环境。
通过APP_FILE环境变量指定Python脚本路径(默认查找app.py),该脚本将被传递给Python解释器以启动应用。
通过APP_SCRIPT环境变量指定可执行脚本路径(默认查找app.sh),该脚本将直接执行以启动应用。
Django应用默认支持热部署。
需在仓库中提供包含reload选项设为true的Gunicorn配置文件,并通过APP_CONFIG环境变量指定该配置文件。
使用podman(或docker)的https://github.com/containers/libpod/blob/master/docs/podman-exec.1.md%E5%91%BD%E4%BB%A4%E8%BF%9B%E5%85%A5%E5%AE%B9%E5%99%A8%EF%BC%9A
bashpodman exec -it <CONTAINER_ID> /bin/bash
进入容器后,当前目录为/opt/app-root/src(源码所在目录)。
Dockerfile及其他源码可在https://github.com/sclorg/s2i-python-container%E8%8E%B7%E5%8F%96%E3%80%82%E8%AF%A5%E4%BB%93%E5%BA%93%E8%BF%98%E5%8C%85%E5%90%AB%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%ACPython%E7%8E%AF%E5%A2%83%E7%9A%84Dockerfile%EF%BC%9ACentOS%E7%9A%84Dockerfile%E5%90%8D%E4%B8%BA%60Dockerfile%60%EF%BC%8CRHEL7%E7%9A%84%E4%B8%BA%60Dockerfile.rhel7%60%EF%BC%8CRHEL8%E7%9A%84%E4%B8%BA%60Dockerfile.rhel8%60%EF%BC%8CFedora%E7%9A%84%E4%B8%BA%60Dockerfile.fedora%60%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务