
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!稳定镜像版本 !Docker镜像大小 !稳定镜像下载量
!https://github.com/JcDenis/docker-dotclear/actions/workflows/release_stable.yml/badge.svg !https://github.com/JcDenis/docker-dotclear/actions/workflows/release_testing.yml/badge.svg !https://github.com/JcDenis/docker-dotclear/actions/workflows/release_unstable.yml/badge.svg
在已安装Docker的目标服务器上,执行:
docker run -d --name dotclear -p 80:80 -v dotclear:/var/www/dotclear jcpd/docker-dotclear
或在已安装Docker Compose的服务器上,执行:
curl -fsSL -o docker-compose.yaml https://raw.githubusercontent.com/JcDenis/docker-dotclear/refs/heads/master/docker-compose.yaml && docker-compose up -d
Dotclear是一款开源网络发布软件。掌控你的博客!
Dotclear项目旨在提供一个用户友好的工具,让任何人无论技术水平如何,都能在网络上发布内容。
=> [***]
本仓库包含在Docker环境中构建或运行Dotclear的所有功能。它主要基于https://github.com/darknao/docker-dotclear%E7%9A%84%E5%B7%A5%E4%BD%9C%E3%80%82
Docker镜像基于Alpine Linux操作系统、Nginx服务器和PHP-FPM语言构建。镜像标签由Dotclear版本或发布类型组成:
克隆本仓库:
git clone https://github.com/JcDenis/docker-dotclear.git
从稳定渠道构建镜像,在Dockerfile路径下执行:
docker build -t dotclear:latest --build-arg CANAL=stable .
或从测试渠道构建镜像,在Dockerfile路径下执行:
docker build -t dotclear:testing --build-arg CANAL=testing .
或从不稳定渠道构建镜像,在Dockerfile路径下执行:
docker build -t dotclear:dev --build-arg CANAL=unstable .
构建支持:
3.3.1 使用MariaDB数据库的docker-compose示例
创建并编辑docker-compose.yaml文件,内容如下:
services: # MYSQL数据库服务 dc_db: image: mariadb:latest container_name: dotcleardb restart: unless-stopped command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - dc_db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: dotclear_root MYSQL_DATABASE: dotclear_db MYSQL_USER: dotclear_user MYSQL_PASSWORD: dotclear_pwd healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 10s interval: 10s timeout: 5s retries: 3 # PHP-FPM服务 dc_app: image: jcpd/docker-dotclear:latest container_name: dotclearphp restart: unless-stopped volumes: - dc_app:/var/www/dotclear ports: - 80:80 depends_on: dc_db: # MYSQL数据库服务 condition: service_healthy # 等待数据库就绪 environment: # 这些变量仅用于首次安装,详见inc/config.php DC_DBDRIVER: mysqlimb4 # MYSQL完整UTF-8支持 DC_DBHOST: dc_db # MYSQL数据库服务名 DC_DBNAME: dotclear_db # 对应MYSQL_DATABASE DC_DBUSER: dotclear_user # 对应MYSQL_USER DC_DBPASSWORD: dotclear_pwd # 对应MYSQL_PASSWORD DC_DBPREFIX: dc_ # 数据库表前缀 DC_ADMINMAILFROM: *** # Dotclear发件*** volumes: dc_app: # NGINX(dotclear)卷 dc_db: # MYSQL(数据库)卷
然后执行:
docker-compose up -d
Dotclear现在可在服务器的http://localhost/访问。首次运行时,Dotclear会执行安装过程并要求创建第一个用户。首次运行需等待容器下载并安装所需版本的Dotclear,这可能需要一些时间...
3.3.2 使用SQLite数据库的单容器docker-compose示例
创建并编辑docker-compose.yaml文件,内容如下:
services: dotclear: image: jcpd/docker-dotclear:latest container_name: dotclear restart: unless-stopped volumes: - ./dotclear:/var/www/dotclear ports: - 80:80 environment: DC_DBDRIVER: sqlite DC_DBNAME: \var\www\dotclear\sqlite.db DC_ADMINMAILFROM: ***
然后执行:
docker-compose up -d
3.3.3 不使用docker compose的直接docker run命令
简单docker命令示例:
docker run -d --name dotclear -p 80:80 -v dotclear:/var/www/dotclear -e DC_DBDRIVER=sqlite -e DC_DBNAME=/var/www/dotclear/sqlite.db -e DC_ADMINMAILFROM=*** jcpd/docker-dotclear:latest
SQLite数据库将存储在\var\www\dotclear文件夹中
3.4.1 子文件夹标准配置
这些镜像使用Dotclear的PATH INFO模式URL重写。默认情况下,URL和路径会由自定义插件自动修正。博客URL格式如下:
博客管理界面可通过http://localhost/admin访问。
在此配置下创建新博客时,必须在博客URL设置中使用带尾斜杠的_blog_id_,例如http://localhost/blog_id/
Web服务器配置
要自定义子文件夹的Web服务器配置,编辑:
/var/www/dotclear/app/servers/subfolder.conf
原始内容如下:
server { server_name localhost; include /etc/nginx/snippets/snippets_subfolder.conf; include /etc/nginx/snippets/snippets_common.conf; }
3.4.2 子域名标准配置
这些镜像使用Dotclear的PATH INFO模式URL重写。默认情况下,URL和路径会由自定义插件自动修正。博客URL格式如下:
博客管理界面可通过[***]
在此配置下创建新博客时,必须在博客URL设置中使用_blog_id_作为子域名,例如[***]
Web服务器配置
要自定义子域名的Web服务器配置,编辑:
/var/www/dotclear/app/servers/subdomain.conf
原始内容如下:
server { server_name ~^(?<dc_blog_id>\w*?)?\.?(\w+\.\w+)$; if ($dc_blog_id = '') { set $dc_blog_id default; } if ($dc_blog_id = 'blog') { set $dc_blog_id default; } include /etc/nginx/snippets/snippets_subdomain.conf; include /etc/nginx/snippets/snippets_common.conf; }
3.4.3 非标准配置
设置nginx服务器配置(见下文):
然后配置博客:
然后修复博客的public_path和public_url:
镜像的默认根路径为__/var/www/dotclear__,包含以下子文件夹:
要将Dotclear升级到新版本,建议拉取最新镜像并重启Docker容器:
docker pull jcpd/docker-dotclear:latest && docker compose up -d
或使用Dotclear内置更新系统,但主题不会被更新。
安全报告详见https://github.com/JcDenis/docker-dotclear/blob/master//SECURITY.md%E6%88%96%E5%9C%A8GitHub%E4%BB%93%E5%BA%93%E6%8F%90%E4%BA%A4%E5%B7%A5%E5%8D%95%E3%80%82
本镜像是开源项目。如果你想贡献,请阅读https://github.com/JcDenis/docker-dotclear/blob/master//CONTRIBUTING.md%E3%80%82%E4%BD%A0%E5%8F%AF%E4%BB%A5%E6%8F%90%E4%BA%A4%E6%8B%89%E5%8F%96%E8%AF%B7%E6%B1%82%EF%BC%8C%E6%88%96%E4%BD%BF%E7%94%A8%E4%BB%BB%E4%BD%95%E4%BD%A0%E5%96%9C%E6%AC%A2%E7%9A%84%E6%96%B9%E5%BC%8F%E3%80%82
涉及多种许可证,从仓库文件到最终Docker镜像中使用的软件:
docker-dotclear仓库中的所有文件均采用AGPL-3许可证,版权所有(c) Jean-Christian Paul Denis。
版权所有(c) Jean-Christian Paul Denis AGPL-v3 <[***]> 本程序是自由软件:你可以根据GNU Affero通用公共许可证(第三版或更高版本)的条款重新分发和/或修改它。 本程序的分发旨在希望它有用,但不提供任何明示或暗示的担保,包括但不限于适销性和特定用途适用性的担保。有关更多详情,请参见GNU Affero通用公共许可证。 你应该已经收到了GNU Affero通用公共许可证的副本。如果没有,请参见<[***]>。
最终Docker镜像中的Alpine Linux操作系统采用MIT许可证,版权所有(c) 2019 Natanael Copa。
最终Docker镜像中的NGINX Web服务器采用2条款BSD类许可证,版权所有(c) 2002-2021 Igor Sysoev,2011-2024 Nginx, Inc.。
最终Docker镜像中的PHP超文本预处理器采用PHP License v3.01许可证,版权所有(c) PHP Group。
最终Docker镜像中的Dotclear软件采用AGPL-v3许可证,版权所有(c) Olivier Meunier & Association Dotclear。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务