
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
此容器镜像包含Perl 5.30,作为https://github.com/openshift/source-to-image%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9E%84%E5%BB%BAPerl 5.30应用程序。用户可选择基于RHEL、CentOS或Fedora的构建器镜像。RHEL镜像可在Red Hat容器目录获取,CentOS镜像可在https://quay.io/organization/centos7%E8%8E%B7%E5%8F%96%EF%BC%8CFedora%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8https://registry.fedoraproject.org/%E8%8E%B7%E5%8F%96%E3%80%82%E7%94%9F%E6%88%90%E7%9A%84%E9%95%9C%E5%83%8F%E5%8F%AF%E4%BD%BF%E7%94%A8https://github.com/containers/libpod%E8%BF%90%E8%A1%8C%E3%80%82
注意:虽然本README中的示例使用podman,但您可以用docker替换所有此类调用,参数保持不变。
Perl 5.30容器镜像是构建和运行各种Perl 5.30应用程序及框架的基础平台。Perl是一种高级编程语言,源于C、sed、awk和shell脚本,擅长处理进程和文件,尤其擅长处理文本。Perl的特点是实用性和高效性,常见应用包括系统管理工具和Web编程。
此容器镜像包含npm工具,用户可用于安装Web应用的JavaScript模块。镜像中包含的npm或nodejs版本不做保证,其版本可能随时变更,nodejs仅为支持npm运行而包含。
本示例假设您使用centos/perl-530-centos7镜像,可通过OpenShift中的perl:5.30镜像流标签获取。
构建https://github.com/sclorg/dancer-ex.git%E5%BA%94%E7%94%A8%EF%BC%9A
bashoc new-app perl:5.30~https://github.com/sclorg/dancer-ex.git
bashoc get pods oc exec <pod> -- curl 127.0.0.1:8080
此镜像支持OpenShift中的源到镜像(S2I)策略。S2I是一种OpenShift框架,可简化将应用源代码作为输入、使用构建器镜像(如本Perl容器镜像)生成运行应用的新镜像的过程。
为支持S2I框架,构建器镜像中包含以下重要脚本:
/usr/libexec/s2i/assemble脚本:用于生成包含应用制品的新镜像。该脚本接收应用源代码并将其放置到镜像内的适当目录,利用Perl应用开发中的常见模式(见下文“环境变量”部分)。
/usr/libexec/s2i/run脚本:被设置为生成的容器镜像(包含应用制品的新镜像)的默认命令,用于在生产环境中运行httpd。
与源到镜像策略相比,使用Dockerfile是构建包含应用的Perl容器镜像的更灵活方式。当源到镜像不够灵活或在OpenShift环境外构建镜像时,可使用Dockerfile。
使用Dockerfile构建Perl镜像的步骤如下:
bashpodman pull quay.io/centos7/perl-530-centos7
本示例使用CentOS镜像quay.io/centos7/perl-530-centos7。
使用示例应用(https://github.com/sclorg/dancer-ex.git%EF%BC%89%EF%BC%8C%E5%8F%AF%E5%85%8B%E9%9A%86%E8%AF%A5%E4%BB%93%E5%BA%93%E8%BF%9B%E8%A1%8C%E5%AE%9E%E9%AA%8C%EF%BC%9A
bashgit clone https://github.com/sclorg/dancer-ex.git app-src
此步骤通常至少包括以下部分:将应用源代码放入容器、安装依赖、设置生成镜像的默认命令。用户可选择手动设置并在Dockerfile中显式使用perl和cpanm命令(见3.1),或使用镜像中的源到镜像脚本(见3.2,有关这些脚本的更多信息见“源到镜像框架和脚本”部分)。
3.1 使用自定义设置
创建如下Dockerfile:
dockerfileFROM quay.io/centos7/perl-530-centos7 # 添加应用源代码 ADD app-src . # 安装依赖 RUN export PATH=${PATH}:/opt/rh/rh-perl530/root/usr/bin/&& \ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/rh/rh-perl530/root/usr/lib64 && \ cpanm --notest -l extlib Module::CoreList && \ cpanm --notest -l extlib --installdeps . CMD sed -i '1i<Location/>' /opt/app-root/etc/httpd.d/40-psgi.conf CMD sed -i '2iSetHandler perl-script' /opt/app-root/etc/httpd.d/40-psgi.conf CMD sed -i '3iPerlResponseHandler Plack::Handler::Apache2' /opt/app-root/etc/httpd.d/40-psgi.conf CMD sed -i '4iPerlSetVar psgi_app app.psgi' /opt/app-root/etc/httpd.d/40-psgi.conf CMD sed -i '5i</Location>' /opt/app-root/etc/httpd.d/40-psgi.conf # 使用标准方式运行应用的脚本 CMD exec httpd -C 'Include /opt/app-root/etc/httpd.conf' -D FOREGROUND
3.2 使用源到镜像脚本
创建如下Dockerfile:
dockerfileFROM quay.io/centos7/perl-530-centos7 # 将应用源代码添加到assemble脚本预期的目录,并设置权限以非root用户运行容器 USER 0 ADD app-src /tmp/src RUN chown -R 1001:0 /tmp/src USER 1001 # 安装依赖 RUN /usr/libexec/s2i/assemble # 设置生成镜像的默认命令 CMD /usr/libexec/s2i/run
bashpodman build -t perl-app .
bashpodman run -d perl-app
要设置环境变量,可在源代码仓库的.s2i/environment文件中以键值对形式添加。
允许安装所有指定的CPAN包并运行其测试。默认值为false。
指定cpanminus用于安装依赖的镜像URL。默认不指定URL。
设为“true”以启用修改后的Perl模块自动重载。
https://httpd.apache.org/docs/2.4/mod/mpm_common.html#startservers%E6%8C%87%E4%BB%A4%E8%AE%BE%E7%BD%AE%E5%90%AF%E5%8A%A8%E6%97%B6%E5%88%9B%E5%BB%BA%E7%9A%84%E5%AD%90%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E7%A8%8B%E6%95%B0%E3%80%82%E9%BB%98%E8%AE%A4%E5%80%BC%E4%B8%BA8%E3%80%82
Apache将处理的同时请求数。默认值为256,但在内存有限时会自动降低。
覆盖PSGI应用检测:
./*.psgi文件,mod_perl将配置为执行该文件。覆盖PSGI应用处理的位置URI路径。默认值为“/”。
Dockerfile及其他源代码可在https://github.com/sclorg/s2i-perl-container%E8%8E%B7%E5%8F%96%E3%80%82%E8%AF%A5%E4%BB%93%E5%BA%93%E4%B8%AD%E8%BF%98%E5%8C%85%E5%90%AB%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%AC%E7%9A%84Perl%E7%8E%AF%E5%A2%83Dockerfile%EF%BC%9ACentOS%E7%9A%84Dockerfile%E5%90%8D%E4%B8%BA%60Dockerfile%60%EF%BC%8CRHEL7%E7%9A%84%E5%90%8D%E4%B8%BA%60Dockerfile.rhel7%60%EF%BC%8CFedora%E7%9A%84%E5%90%8D%E4%B8%BA%60Dockerfile.fedora%60%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务