
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
ContentBox是一个专业的开源(Apache 2许可证)模块化内容管理引擎,允许您轻松构建网站、博客、Wiki、复杂Web应用,甚至通过其内置的RESTful服务为移动或云应用提供支持。它基于安全灵活的模块化核心构建,设计用于扩展,并结合世界级支持,可部署到任何Java服务器或ColdFusion (CFML)服务器。
提示: ContentBox由ColdBox HMVC框架和Hibernate ORM提供支持。
了解更多关于ContentBox的信息,请访问 [],Docker部署相关内容请访问:[]
我们的标签分为生产环境和开发环境容器镜像。请谨慎选择:muscle:
:latest - ContentBox和镜像的最新稳定版本:{imageVersion} - 特定的ContentBox和镜像版本(例如 :5.6.0):alpine - 基于Alpine Linux的最新稳定版本:lucee5 - 预热Lucee 5的镜像最新稳定版本:adobe2021 - 预热Adobe 2021的镜像最新稳定版本:adobe2018 - 预热Adobe 2018的镜像最新稳定版本:adobe2016 - 预热Adobe 2016的镜像最新稳定版本以下标签基于镜像的development分支。这些是前沿容器镜像,我们用于测试,直到它们被提升为生产标签。
:snapshot - 镜像的开发版本:alpine-snapshot - 基于Alpine Linux的镜像开发版本:lucee5-snapshot - 预热Lucee 5的镜像开发版本:adobe2018-snapshot - 预热Adobe 2018的镜像开发版本:adobe2021-snapshot - 预热Adobe 2021的镜像开发版本:adobe2016-snapshot - 预热Adobe 2016的镜像开发版本提示: 在标签部分查看其他特定的ContentBox版本
ContentBox镜像基于https://hub.docker.com/r/ortussolutions/commandbox/构建,因此所有特性和环境变量均适用。也请参考该文档:https://hub.docker.com/r/ortussolutions/commandbox/
本节假设您使用https://hub.docker.com/r/ortussolutions/contentbox/
要部署新应用,首先拉取镜像(默认为latest标签):
bashdocker pull docker.xuanyuan.run/ortussolutions/contentbox
该镜像包含一个自包含的EXPRESS版本,使用非常快速且便携的内存H2数据库引擎。开始使用只需运行:
bashdocker run -p 8080:8080 \ -e EXPRESS=true \ -e INSTALL=true \ docker.xuanyuan.run/ortussolutions/contentbox
提示:
INSTALL标志指示镜像引导您完成ContentBox安装程序以预填充数据库。一旦数据库通过卷持久化后,可以移除此标志。
将从镜像启动一个新容器,在浏览器中打开http://[docker机器IP]:8080,您将被引导至ContentBox安装向导进行配置。
上述run命令生成的镜像是自包含的,容器停止时会被销毁。如果要在生产环境中运行,至少需要持久化数据库和自定义资产(小部件、模块、主题和媒体库)。为此,需要将这些资源挂载到Docker主机文件系统。
按照约定,express H2数据库存储在容器内的/data/contentbox/db。此外,包含自定义主题、小部件、模块和媒体库的自定义内容模块存储在/app/modules_app/contentbox-custom下。
| 挂载点 | 描述 |
|---|---|
/data/contentbox/db | express H2数据库 |
/app/modules_app/contentbox-custom | 自定义代码模块 |
/app/includes/shared/media | 旧版媒体位置,建议使用自定义模块位置替代。 |
让我们挂载这两个卷点,以便数据库和用户资产在重启间持久化:
bashdocker run -p 8080:8080 \ -e EXPRESS=true \ -e INSTALL=true \ -v `pwd`/contentbox-db:/data/contentbox/db \ -v `pwd`/contentbox-custom:/app/modules_app/contentbox-custom \ docker.xuanyuan.run/ortussolutions/contentbox
镜像启动后,完成初始配置。配置完成后,只需停止容器,然后启动时不包含INSTALL环境变量。H2数据库和上传内容将持久化,容器启动时安装程序会自动移除。
bashdocker run -p 8080:8080 \ -e EXPRESS=true \ -v `pwd`/contentbox-db:/data/contentbox/db \ -v `pwd`/contentbox-custom:/app/modules_app/contentbox-custom \ docker.xuanyuan.run/ortussolutions/contentbox
INSTALL设置注意事项请记住,INSTALL环境变量仅用于通过ContentBox安装向导。一旦数据库通过安装过程填充,除非要重新配置安装,否则不再使用它。
如果要将容器连接到外部数据库系统(MySQL、Oracle、MSSQL等),可以轻松实现,从而允许从多个容器以分布式方式连接。否则,如果多个容器副本共享同一个H2数据库,可能会出现文件锁问题。
提示: 建议在仅使用1个副本时使用H2数据库或EXPRESS版本。
镜像配置为允许通过指定环境变量来配置所有ORM支持的JDBC驱动程序。或者,您可以指定CFCONFIG环境变量,指向包含引擎配置(包括数据源)的文件。
按照约定,预期的数据源名称为
contentbox。
要在容器启动时以编程方式配置数据库,应提供表示数据源配置的环境变量。支持两种模式:
DB_DRIVER配置 - 可用于Adobe Coldfusion服务器DB_CLASS配置 - 通过JDBC驱动程序和连接字符串配置数据源(Adobe和Lucee均支持)配置MySQL数据库的容器run命令示例:
bashdocker run -p 8080:8080 \ -e 'INSTALL=true' \ -e 'CFCONFIG_ADMINPASSWORD=myS3cur3P455' \ -e "DB_CONNECTION_STRING=jdbc:mysql://mysqlhost:3306/contentbox_docker?useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=true" \ -e 'DB_CLASS=org.gjt.mm.mysql.Driver' \ -e 'DB_USER=contentbox_user' \ -e 'DB_PASSWORD=myS3cur3P455' \ -v `pwd`/contentbox-custom:/app/modules_app/contentbox-custom \ docker.xuanyuan.run/ortussolutions/contentbox
对于Adobe Coldfusion使用DB_DRIVER语法的run命令示例:
bashdocker run -p 8080:8080 \ -e 'CFENGINE=adobe@11' \ -e 'INSTALL=true' \ -e 'CFCONFIG_ADMINPASSWORD=myS3cur3P455' \ -e 'DB_DRIVER=MSSQLServer' \ -e 'DB_HOST=sqlserver_host' \ -e 'DB_PORT=1433' \ -e 'DB_NAME=contentbox_docker' \ -e 'DB_USER=sa' \ -e 'DB_PASSWORD=myS3cur3P455' \ -v `pwd`/contentbox-custom:/app/modules_app/contentbox-custom \ docker.xuanyuan.run/ortussolutions/contentbox
可以看到,这些命令可能很长。因此,使用https://docs.docker.com/compose/或https://www.gitbook.com/book/ortus/cfconfig-documentation/details可能是更易管理的替代方案。
ContentBox镜像提供了许多特定的环境变量,包括:
EXPRESS=true - 使用H2内存数据库。适用于小型站点或测试镜像。参见[***]INSTALL=true - 在运行时添加安装程序模块,协助配置安装。数据库配置完成后,run命令中应省略此变量CONTENTBOX_MIGRATE=true - 在容器启动前执行检查并运行任何必要的ContentBox版本迁移BE=true - 使用ContentBox CMS的前沿快照版本,否则使用最新稳定版本HEALTHCHECK_URI - 指定容器健康检查的URI端点。默认设置为http://127.0.0.1:${PORT}/,间隔1分钟,重试5次,超时30秒FWREINIT_PW - 允许指定ColdBox框架的重新初始化密码SESSION_STORAGE - 允许自定义会话存储。允许http://docs.lucee.org/reference/tags/application.html中任何有效的`this.sessionStorage`值。默认使用JDBC连接将会话存储在所选数据库中DISTRIBUTED_CACHE - 允许指定CacheBox缓存区域,用于分发ContentBox内容、闪存消息、缓存存储、RSS源、站点地图和设置。此镜像中定义了三个缓存区域:default、template和jdbc。jdbc是默认缓存,用于分发数据;default和template是内存缓存。请参见下面的分布式缓存部分了解如何注册更多缓存H2_DIR - 允许指定H2数据库的自定义目录路径。默认在容器内设置为/data/contentbox/dbcontentbox_default_* - 所有Contentbox“极客设置”都可以作为环境变量提供,允许对ContentBox设置进行细粒度控制ORM_SECONDARY_CACHE - 如果为true,将激活ORM二级缓存到ehcache提供程序。默认关闭ORM_DIALECT - 如有需要,可选择特定的ORM方言,否则将尝试自动检测REMOVE_CBADMIN=false - 如果为true,镜像将不发布Admin模块,仅发布核心、REST和UI模块JVM_HEAPSIZE=512 - 分配给运行ContentBox的JVM的内存量(兆字节)。默认设置为512mb此外,https://hub.docker.com/r/ortussolutions/commandbox/的环境变量也可在容器中使用。有关使用CommandBox docker镜像的更多信息,请参见初始发布博客文章。
默认情况下,ContentBox镜像使用Lucee开源CFML引擎运行应用程序。它还会配置数据源来存储用户会话,因此您可以轻松扩展镜像或将其发送到Docker Swarm、Kubernetes等以实现可扩展性。
您也可以使用SESSION_STORAGE环境变量将连接切换到任何您喜欢的后端。
默认情况下,我们的镜像配置了jdbc CacheBox缓存区域,用于分发设置、会话、闪存数据、内容、RSS源、站点地图等。这意味着ContentBox容器可以开箱即用地使用数据库在集群或服务集中分发内容。但是,如果您想使用自己的CacheBox提供程序或更复杂的分布式缓存(如Redis或Couchbase),也是可以的。
我们还准备了一个使用Redis(将支持更多缓存)和ContentBox镜像的docker compose及分发示例。此示例允许您拥有一个可通过Redis轻松分发会话和内容的堆栈。您可以在以下仓库的distributed-example文件夹中找到该示例:https://github.com/Ortus-Solutions/docker-contentbox/tree/development/distributed-example
镜像包含内置的运行中应用健康检查功能。您可以使用HEALTHCHECK_URI环境变量自定义URL入口点。默认设置为http://127.0.0.1:${PORT}/,间隔30秒,重试15次,超时60秒。
请将问题提交到我们的仓库:https://github.com/Ortus-Solutions/docker-commandbox/issues
您可以使用以下命令在本地构建镜像:
docker build --no-cache -f ./Dockerfile ./
测试镜像是否正确构建:
docker run -t -p 8080:8080 -e 'EXPRESS=true' -e 'INSTALL=true' [hash]
返回哈希后,可使用以下命令发布到Ortus仓库(如果有权限):
docker tag [hash] ortussolutions/contentbox:5.6.0 docker tag ortussolutions/contentbox:5.6.0 ortussolutions/contentbox:latest docker tag ortussolutions/contentbox:5.6.0 ortussolutions/contentbox:snapshot docker push ortussolutions/contentbox
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务