ContentBox是一个专业的开源(Apache 2许可证)模块化内容管理引擎,允许您轻松构建网站、博客、Wiki、复杂Web应用,甚至通过其内置的RESTful服务为移动或云应用提供支持。它基于安全灵活的模块化核心构建,设计用于扩展,并结合世界级支持,可部署到任何Java服务器或ColdFusion (CFML)服务器。
提示: ContentBox由ColdBox HMVC框架和Hibernate ORM提供支持。
了解更多关于ContentBox的信息,请访问 [***]
我们的标签分为生产环境和开发环境容器镜像。请谨慎选择: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/%E6%9E%84%E5%BB%BA%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%89%80%E6%9C%89%E7%89%B9%E6%80%A7%E5%92%8C%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%9D%87%E9%80%82%E7%94%A8%E3%80%82%E4%B9%9F%E8%AF%B7%E5%8F%82%E8%80%83%E8%AF%A5%E6%96%87%E6%A1%A3%EF%BC%9Ahttps://hub.docker.com/r/ortussolutions/commandbox/
本节假设您使用https://hub.docker.com/r/ortussolutions/contentbox/
要部署新应用,首先拉取镜像(默认为latest标签):
bashdocker pull ortussolutions/contentbox
该镜像包含一个自包含的EXPRESS版本,使用非常快速且便携的内存H2数据库引擎。开始使用只需运行:
bashdocker run -p 8080:8080 \ -e EXPRESS=true \ -e INSTALL=true \ 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 \ 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 \ 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 \ 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 \ ortussolutions/contentbox
可以看到,这些命令可能很长。因此,使用Docker Compose或CFConfig可能是更易管理的替代方案。
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 - 允许自定义会话存储。允许Application.cfc中任何有效的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/%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E4%B9%9F%E5%8F%AF%E5%9C%A8%E5%AE%B9%E5%99%A8%E4%B8%AD%E4%BD%BF%E7%94%A8%E3%80%82%E6%9C%89%E5%85%B3%E4%BD%BF%E7%94%A8CommandBox 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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务