
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
轻量级Craft CMS 3 Docker镜像,提供PostgreSQL(urbantrout/craftcms:postgresql)和MySQL(urbantrout/craftcms:mysql)两种数据库支持版本。该镜像需配合用户自行配置的Web服务器和数据库使用,适用于Craft CMS 3的开发与部署场景。
适用于需要快速部署Craft CMS 3的开发环境或生产环境,尤其适合需要自定义Web服务器配置、灵活管理插件依赖及数据库备份的场景。
仅需两个文件:
建议在.gitignore文件中添加backups/.ignore,该文件用于自动数据库恢复,列出的文件不会在启动时导入。
PostgreSQL示例
yml# docker-compose.yml version: '2.1' services: nginx: image: nginx:alpine ports: - 80:80 depends_on: - craft volumes_from: - craft volumes: - ./default.conf:/etc/nginx/conf.d/default.conf # nginx配置(见下文) - ./assets:/var/www/html/web/assets # 静态资源(媒体、js和css) craft: image: urbantrout/craftcms:postgresql depends_on: - postgres volumes: - ./assets:/var/www/html/web/assets:z - ./backups:/var/www/html/storage/backups # 用于启动时恢复数据库 - ./templates:/var/www/html/templates # Craft CMS模板文件 - ./translations:/var/www/html/translations - ./redactor:/var/www/html/config/redactor environment: DEPENDENCIES: >- # 额外的composer包(必须用逗号分隔) yiisoft/yii2-redis, craftcms/redactor:2.0.1, CRAFTCMS_EMAIL: admin@company.com CRAFTCMS_USERNAME: admin CRAFTCMS_PASSWORD: super-secret-password CRAFTCMS_SITENAME: Craft CMS Installation CRAFTCMS_SITEURL: http://dev.project.com # 可选 CRAFTCMS_LANGUAGE: de-AT # 可选 AUTO_UPDATE: 'false' # 启用/禁用所有composer包(包括Craft CMS)的自动更新(默认:true) REDIS_HOST: redis SESSION_DRIVER: redis CACHE_DRIVER: redis DB_DSN: pgsql:host=postgres;dbname=craft DB_SERVER: postgres DB_NAME: craft DB_USER: craft DB_PASSWORD: secret DB_DATABASE: craft DB_SCHEMA: public DB_DRIVER: pgsql DB_PORT: 5432 DB_TABLE_PREFIX: ut postgres: image: postgres:10.3-alpine environment: POSTGRES_ROOT_PASSWORD: root POSTGRES_USER: craft POSTGRES_PASSWORD: secret POSTGRES_DB: craft volumes: # 持久化数据 - pgdata:/var/lib/postgresql/data redis: image: redis:4-alpine volumes: - redisdata:/data volumes: pgdata: redisdata:
MySQL数据库示例
yml# docker-compose.yml version: '2.1' services: nginx: image: nginx:alpine ports: - 80:80 depends_on: - craft volumes_from: - craft volumes: - ./default.conf:/etc/nginx/conf.d/default.conf # nginx配置(见下文) - ./assets:/var/www/html/web/assets # 静态资源(媒体、js和css) craft: image: urbantrout/craftcms:mysql # 使用mysql而非postgresql depends_on: - mariadb volumes: - ./assets:/var/www/html/web/assets:z - ./backups:/var/www/html/storage/backups # 用于启动时恢复数据库 - ./templates:/var/www/html/templates # Craft CMS模板文件 - ./translations:/var/www/html/translations - ./redactor:/var/www/html/config/redactor environment: DEPENDENCIES: >- # 额外的composer包(必须用逗号分隔) yiisoft/yii2-redis, craftcms/redactor:2.0.1 CRAFTCMS_EMAIL: admin@company.com CRAFTCMS_USERNAME: admin CRAFTCMS_PASSWORD: super-secret-password CRAFTCMS_SITENAME: Craft CMS Installation CRAFTCMS_SITEURL: http://dev.project.com # 可选 AUTO_UPDATE: 'false' # 启用/禁用所有composer包(包括Craft CMS)的自动更新(默认:true) REDIS_HOST: redis SESSION_DRIVER: redis CACHE_DRIVER: redis DB_DSN: mysql:host=mariadb;dbname=craft DB_SERVER: mariadb DB_NAME: craft DB_USER: craft DB_PASSWORD: secret DB_DATABASE: craft DB_SCHEMA: public DB_DRIVER: mysql DB_PORT: 3306 DB_TABLE_PREFIX: ut mariadb: image: mariadb:10.1 environment: MYSQL_ROOT_PASSWORD: root MYSQL_USER: craft MYSQL_PASSWORD: secret MYSQL_DATABASE: craft volumes: # 持久化数据 - dbdata:/var/lib/mysql redis: image: redis:4-alpine volumes: - redisdata:/data volumes: dbdata: redisdata:
在项目目录中创建名为default.conf的文件:
nginx# default.conf server { listen 80 default_server; listen [::]:80 default_server; server_name localhost; index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/html/web; charset utf-8; # 根目录位置处理 location / { try_files $uri/index.html $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri $uri/ /index.php?$query_string; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass craft:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
通过环境变量DEPENDENCIES添加插件,容器创建时会自动添加或移除这些依赖。
在docker-compose文件中配置:
yamlvolumes: - ./path/to/plugin:/plugins/plugin # 如需本地插件供composer使用 environment: DEPENDENCIES: >- # 额外的composer包(必须用逗号分隔) craftcms/redactor:2.0.1, [vendor/package-name:branch-name]https://url-to-the-git-repo.git, # 分支名需前缀dev- [vendor/package-name:version]/path/to/volume # 版本格式如1.0.0
可从公共Git仓库或本地文件夹添加插件。本地插件需确保已配置卷,使Docker能够访问。
修改依赖后,运行docker-compose down && docker-compose up以移除并重新创建容器。
创建卷挂载到/var/www/html/storage/backups:
volumes: - ./backups:/var/www/html/storage/backups
从Craft CMS控制面板创建数据库转储时,sql文件会自动保存到此文件夹,可添加到Git仓库。
启动时,Docker镜像会查找此文件夹中的sql或zip文件并导入,除非文件名列在.ignore文件中(防止重复导入)。成功导入后,该文件会自动添加到.ignore中。
创建config/app.php并添加以下内容:
phpreturn [ 'components' => [ 'cache' => [ 'class' => yii\redis\Cache::class, 'defaultDuration' => 86400, 'redis' => [ 'hostname' => getenv('REDIS_HOST'), 'port' => 6379, 'database' => 1, ], ], ], ];
在DEPENDENCIES环境变量中添加yiisoft/yii2-redis,并为Redis配置创建卷:
yamlvolumes: - ./config/app.php:/var/www/html/config/app.php
在docker-compose.yml中添加Redis服务:
yamlredis: image: redis:4-alpine volumes: - redisdata:/data
运行docker-compose up,访问http://localhost/admin即可。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务