Nodejs並支持 React的CMS解決方案(todo study)
在您提到的选项中,以下的 CMS 可以通过 Docker Compose 构建,并使用 MariaDB 进行数据库连接,类似于 WordPress 的部署方式:
1. Strapi
• Docker 支持:Strapi 提供了官方的 Docker 镜像,并有示例供参考。
• MariaDB 支持:Strapi 默认支持 MariaDB,您可以在配置中指定。
• 部署示例:
以下是一个使用 Docker Compose 部署 Strapi 和 MariaDB 的示例:
version: '3'
services:
strapi:
image: strapi/strapi
ports:
- '1337:1337'
environment:
DATABASE_CLIENT: mysql
DATABASE_HOST: db
DATABASE_PORT: 3306
DATABASE_NAME: strapi
DATABASE_USERNAME: root
DATABASE_PASSWORD: example
depends_on:
- db
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: strapi
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
使用步骤:
1. 将上述内容保存为 docker-compose.yml 文件。
2. 在终端中运行 docker-compose up -d 启动服务。
3. 访问 http://localhost:1337,按照提示完成 Strapi 的初始设置。
2. KeystoneJS
• Docker 支持:虽然 KeystoneJS 没有官方的 Docker 镜像,但您可以自己编写 Dockerfile,或者使用社区提供的镜像。
• MariaDB 支持:通过 Prisma,KeystoneJS 可以连接到 MariaDB。
• 部署示例:
由于需要自定义配置,建议参考以下步骤:
1. 编写 Dockerfile:创建一个包含您的 KeystoneJS 应用的 Dockerfile。
2. 编写 docker-compose.yml:配置 KeystoneJS 服务和 MariaDB 服务。
3. 运行:使用 docker-compose up -d 启动。
3. Payload CMS
• Docker 支持:Payload CMS 提供了 Docker 部署指南。
• MariaDB 支持:支持 MySQL 兼容的数据库,包括 MariaDB。
• 部署示例:
version: '3'
services:
payload:
image: payloadcms/payload
ports:
- '3000:3000'
environment:
PAYLOAD_CONFIG_PATH: ./payload.config.js
DATABASE_URL: mysql://root:example@db:3306/payload
volumes:
- ./:/usr/src/app
depends_on:
- db
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: payload
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
4. Webiny
• Docker 支持:Webiny 可以使用 Docker 部署,但主要设计为无服务器架构。
• MariaDB 支持:需要进行额外的配置,可能不如其他选项直接。
推荐方案:
鉴于您的需求,Strapi 是最直接和方便的选择。它提供了官方的 Docker 镜像,默认支持 MariaDB,而且社区资源丰富。
参考资料:
• Strapi 官方文档:Strapi – Getting Started with Docker
• Payload CMS Docker 指南:Payload CMS – Docker Deployment
注意事项:
• 环境变量:确保在 docker-compose.yml 中正确配置环境变量,如数据库用户名、密码和数据库名称。
• 数据持久化:使用 Docker 卷(volumes)来持久化数据库数据,防止数据在容器重启时丢失。
• 端口映射:确认服务的端口映射,避免与本地其他服务冲突。
我覺得wordpress的優勢在於 plugin很多,很多金流都有套件可以用…看來要找時間來試一下這些架站是否可以用來取代wordpress了