当前位置: 首页 > news >正文

11.Docker实战-部署 Ghost 开源内容管理系统

Docker 环境下部署 Ghost 开源内容管理系统

文章目录

  • Docker 环境下部署 Ghost 开源内容管理系统
    • 实验目标
    • 实验环境准备
    • 实验步骤
      • 步骤 1:创建项目目录结构
      • 步骤 2:编写 Docker Compose 配置文件
      • 步骤 3:启动服务
      • 步骤 4:访问和配置 Ghost
      • 步骤 5:创建第一篇文章
      • 步骤 6:服务管理操作
      • 步骤 7:备份与恢复
        • 备份数据
        • 恢复数据
      • 步骤 8:自定义配置(可选)
      • 步骤 9:清理环境
    • 实验总结

Ghost 是一款专注于内容创作的开源内容管理系统 (CMS),特别适合博客、杂志和出版物。本实验将通过 Docker 和 Docker Compose 在容器环境中部署一个完整的 Ghost 服务,包括 Ghost 应用本身和 MySQL 数据库。

实验目标

  • 理解多容器应用的协作关系
  • 掌握使用 Docker Compose 编排服务的方法
  • 学会配置 Ghost 与数据库的连接
  • 实现 Ghost 服务的持久化存储和端口映射
  • 熟悉 Ghost 的基本配置和使用

实验环境准备

确保已安装以下软件:

  • Docker (20.10 或更高版本)
  • Docker Compose (v2 或更高版本)

验证安装:

docker --version
docker compose version  # 注意v2版本使用"docker compose"而非"docker-compose"

实验步骤

步骤 1:创建项目目录结构

首先创建一个专用目录来存放 Ghost 相关配置:

# 创建项目目录
mkdir -p ghost-blog && cd ghost-blog# 创建数据持久化目录
mkdir -p data/ghost data/mysql# 设置目录权限
chmod -R 777 data  # 简化权限设置,生产环境需更精细配置

步骤 2:编写 Docker Compose 配置文件

创建docker-compose.yml文件,定义 Ghost 和 MySQL 服务:

Ghost与MySQL的Docker Compose配置

version: '3.8'services:# MySQL数据库服务db:image: mysql:8.0container_name: ghost-mysqlrestart: alwaysenvironment:# 数据库根密码MYSQL_ROOT_PASSWORD: ghostrootpassword# 为Ghost创建的数据库名MYSQL_DATABASE: ghostdb# 数据库用户名MYSQL_USER: ghostuser# 数据库用户密码MYSQL_PASSWORD: ghostpasswordvolumes:# 持久化MySQL数据- ./data/mysql:/var/lib/mysqlnetworks:- ghost-networkhealthcheck:test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]interval: 10stimeout: 5sretries: 5# Ghost服务ghost:image: ghost:5-alpinecontainer_name: ghost-blogrestart: alwaysdepends_on:db:condition: service_healthyenvironment:# 生产环境设置NODE_ENV: production# 数据库连接配置database__client: mysqldatabase__connection__host: dbdatabase__connection__user: ghostuserdatabase__connection__password: ghostpassworddatabase__connection__database: ghostdb# 博客URL,替换为你的IP或域名url: http://localhost:3001# 端口设置server__port: 2368volumes:# 持久化Ghost内容和配置- ./data/ghost:/var/lib/ghost/contentports:# 映射到宿主机3001端口- "3001:2368"networks:- ghost-networknetworks:ghost-network:driver: bridge

配置说明:

  • 使用 MySQL 8.0 作为数据库,比 SQLite 更适合生产环境
  • 定义了健康检查确保数据库就绪后才启动 Ghost
  • 所有数据通过卷 (volumes) 持久化存储
  • 两个服务通过专用网络 (ghost-network) 通信
  • Ghost 默认运行在 2368 端口,映射到宿主机 3001 端口

步骤 3:启动服务

在项目目录下执行以下命令启动服务:

# 启动服务(后台运行)
docker compose up -d# 查看服务状态
docker compose ps# 查看日志
docker compose logs -f

首次启动时,系统会:

  1. 拉取所需的 Docker 镜像
  2. 创建并启动 MySQL 容器
  3. 初始化数据库
  4. 启动 Ghost 容器并连接到数据库

成功启动后,你会看到类似以下的输出:

NAME                IMAGE               COMMAND                  SERVICE             CREATED             STATUS                   PORTS
ghost-blog          ghost:5-alpine      "docker-entrypoint.s…"   ghost               10s ago             Up 8s (healthy)          0.0.0.0:3001->2368/tcp
ghost-mysql         mysql:8.0           "docker-entrypoint.s…"   db                  10s ago             Up 9s (healthy)          3306/tcp, 33060/tcp

步骤 4:访问和配置 Ghost

  1. 打开浏览器,访问http://localhost:3001,你将看到 Ghost 的默认首页
  2. 访问管理后台:http://localhost:3001/ghost
  3. 首次访问需要创建管理员账号:
    • 点击 “Create your account”
    • 填写用户名、邮箱和密码
    • 完成设置向导
  4. 基本配置:
    • 在管理后台,点击左侧菜单的 “Settings”
    • 更改博客标题:Settings → General → Site title
    • 配置导航菜单:Settings → Navigation
    • 设置主题:Settings → Design

步骤 5:创建第一篇文章

  1. 在管理后台点击左侧菜单的 “Posts”
  2. 点击 “+ New post” 按钮
  3. 输入标题和内容(支持 Markdown 格式)
  4. 点击右上角的 “Publish” 按钮发布文章
  5. 访问首页查看发布的文章

步骤 6:服务管理操作

# 停止服务
docker compose stop# 启动服务
docker compose start# 重启服务
docker compose restart# 查看Ghost容器日志
docker compose logs -f ghost# 进入Ghost容器内部
docker exec -it ghost-blog /bin/sh# 进入MySQL容器
docker exec -it ghost-mysql mysql -u root -p
# 输入密码:ghostrootpassword

步骤 7:备份与恢复

备份数据
# 创建备份目录
mkdir -p backups# 备份Ghost数据
tar -czf backups/ghost-data-$(date +%Y%m%d).tar.gz ./data/ghost# 备份MySQL数据
docker exec ghost-mysql mysqldump -u root -pghostrootpassword --all-databases > backups/mysql-backup-$(date +%Y%m%d).sql
恢复数据
# 停止服务
docker compose down# 恢复Ghost数据(替换为实际备份文件名)
tar -xzf backups/ghost-data-xxxxxx.tar.gz -C ./# 恢复MySQL数据(替换为实际备份文件名)
cat backups/mysql-backup-xxxxxx.sql | docker exec -i ghost-mysql mysql -u root -pghostrootpassword# 启动服务
docker compose up -d

步骤 8:自定义配置(可选)

可以通过修改docker-compose.yml文件来自定义 Ghost:

  1. 更改端口映射:修改ports配置,如"80:2368"将使用 80 端口

  2. 配置邮件服务:添加邮件相关环境变量:

    environment:# 其他配置...mail__transport: SMTPmail__options__host: smtp.example.commail__options__port: 587mail__options__secure: falsemail__options__auth__user: your-email@example.commail__options__auth__pass: your-email-password
    
  3. 使用 Nginx 作为反向代理(高级配置):
    添加 Nginx 服务到docker-compose.yml,配置 SSL 和域名

步骤 9:清理环境

实验结束后,如需清理环境:

# 停止并删除容器、网络(数据卷保留)
docker compose down# 停止并删除容器、网络和数据卷(完全清理)
docker compose down -v# 返回上级目录并删除项目文件夹
cd .. && rm -rf ghost-blog

实验总结

  1. 使用 Docker Compose 编排多容器应用(Ghost + MySQL)
  2. 配置容器间的网络通信和依赖关系
  3. 实现数据持久化存储,确保容器重启后数据不丢失
  4. 基本的容器管理操作(启动、停止、日志查看等)
  5. Ghost CMS 的初始化配置和内容发布流程
  6. 数据备份与恢复的基本方法

Ghost 作为一款轻量级 CMS,非常适合个人博客和小型内容网站。使用 Docker 部署不仅简化了安装过程,还能保证环境一致性,便于迁移和升级。

http://www.dtcms.com/a/495335.html

相关文章:

  • 【小白笔记】区分类方法/实例方法和静态函数/命名空间函数
  • Python 分类模型评估:从理论到实战(以信用卡欺诈检测为例)
  • 开源 C++ QT QML 开发(二十三)程序发布
  • 礼与仁:社会规范与内心情感的双人舞
  • 设计模式之:简单工厂模式
  • 哈尔滨网站建设哪儿好薇榆社网站建设
  • python的报错
  • 【数据结构】单链表“0”基础知识讲解 + 实战演练
  • 龙虎榜——20251017
  • seo是做网站源码还是什么体外产品的研发网站如何建设
  • HTML纯JS添加删除行示例二
  • 笔试-基站维护
  • 深入解析内存中的整数与浮点数存储
  • 网站你懂我意思正能量免费软件山西格泰网站建设
  • 网站栏目变了怎么做跳转关键词网站排名查询
  • Android 集成指南:Google 登录、Facebook 登录 与 Firebase 深入接入(实战)
  • python 单词搜索(回溯-矩阵-字符串-中等)含源码(二十)
  • hot 100 | 一文讲清动态规划
  • 操作简单稳定选巨 椰 云手机
  • 设计模式之:工厂方法模式
  • 西宁市精神文明建设网站餐饮店面装饰设计
  • 对营销网站建设评估及分析佛山顺德做网站
  • 高并发系统架构设计原则:无状态、水平扩展、异步化、缓存优先
  • 系统架构设计师备考第45天——软件架构演化评估方法和维护
  • 基于SpringBoot+Vue的社区诊所管理系统(AI问答、webSocket实时聊天、Echarts图形化分析)
  • 【MySQL】第二章 基本的SELECT语句
  • Linux中软中断tasklet任务队列初始化
  • 网站制作的重要流程世界优秀摄影作品网站
  • 技术剖析:智能体工作流与RPA流程自动化的架构差异与融合实现
  • 深圳比斯特自动化|圆柱电池测试设备核心功能与技术发展解析