
轻量级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即可。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务