不得不说现在有AI真是方便,把我乱七八糟,狗屁不通,只有我自己能看懂的笔记内容丢给AI整理一下就是一篇上好佳文!!!

Orchard Core Docker 部署终极指南:从源码构建到后台配置

在部署 Orchard Core 时,我们通常会直接从 Docker Hub 拉取官方镜像。但在某些特殊情况下,可能会遇到 pull access deniedrepository does not exist 的错误,即使镜像名称完全正确,也无法成功部署。

本指南将为您提供一套终极解决方案:在服务器上直接从 Orchard Core 的 GitHub 源码构建 Docker 镜像,并以此完成部署。此外,本文还将详细介绍安装完成后的后台基础配置,包括中文内容支持主题管理常规内容操作,助您顺利上手。

Part 1: 解决 Docker 拉取失败 - 从源码构建

当标准 docker pull 方法失效时,自己动手,丰衣足食。我们将直接在服务器上生成一个本地镜像。

1.1 环境准备

在开始之前,请确保您的服务器(本文以 Ubuntu/Debian 为例)已经安装了以下核心工具:

  • Docker
  • Docker Compose
  • Git

如果尚未安装 Git,请执行以下命令:

sudo apt-get update
sudo apt-get install -y git

1.2 克隆 Orchard Core 源码

我们需要从 GitHub 上获取 Orchard Core 的官方源代码。

# 推荐将源码存放在 /usr/local/src 目录
cd /usr/local/src

# 从 GitHub 克隆最新的源码仓库
git clone https://github.com/OrchardCMS/OrchardCore.git

# 进入源码的根目录,后续操作将在这里进行
cd OrchardCore

1.3 在本地构建 Docker 镜像

这是解决问题的关键步骤。我们将使用源码中自带的 Dockerfile 文件,在服务器上编译并生成一个本地镜像。

  1. 执行构建命令
    OrchardCore 源码的根目录下,运行以下命令。

    # 注意命令最后的那个点 ".",代表当前目录
    docker build -t my-orchardcore-image:latest .

    命令解析:

    • docker build: Docker 的镜像构建命令。
    • -t my-orchardcore-image:latest: -t 参数用于给新镜像打上标签 (tag)。我们将其命名为 my-orchardcore-image:latest,这个名称可以自定义。
    • .: 使用当前目录作为构建上下文,将所有源码文件包含进来。
  2. 耐心等待
    这个过程会花费 5 到 20 分钟,因为它需要下载 .NET SDK、还原依赖包、编译代码等。当您在终端看到 Successfully tagged my-orchardcore-image:latest 的消息时,就代表本地镜像已成功构建。

1.4 配置 Docker Compose (SQLite 版本)

现在,我们有了本地镜像,接下来需要编写 docker-compose.yml 文件来运行它。为了方便测试,我们使用 SQLite 数据库。

  1. 创建部署目录:

    # 回到你存放网站项目的目录,例如 /www/wwwroot
    cd /www/wwwroot
    mkdir orchard-from-source
    cd orchard-from-source
  2. 创建 docker-compose.yml 文件:
    在该目录下创建 docker-compose.yml 文件,并填入以下内容。

    services:
      orchardcore:
        # 关键!使用我们刚刚在本地构建的镜像名称
        image: my-orchardcore-image:latest
        container_name: orchardcore_from_source_app
        restart: unless-stopped
        ports:
          # 将宿主机的 8080 端口映射到容器的 80 端口
          # 访问地址将是:http://你的服务器IP:8080
          - "8080:80"
        volumes:
          # 持久化 Orchard Core 的数据卷,SQLite 数据库文件会存放在这里
          - orchard_data:/app/App_Data
        environment:
          # 指定数据库提供者为 Sqlite
          OrchardCore__Database__Provider: "Sqlite"
          # 对于 SQLite,连接字符串留空,系统会自动创建数据库文件
          OrchardCore__Database__ConnectionString: ""
    
    # 定义数据卷,确保容器删除后数据不丢失
    volumes:
      orchard_data:

1.5 启动并完成初始设置

万事俱备,启动服务!

  1. docker-compose.yml 所在的目录 (/www/wwwroot/orchard-from-source) 下运行:

    docker-compose up -d
  2. 等待片刻,在浏览器中打开 http://你的服务器IP:8080
  3. 您会看到 Orchard Core 的初始设置页面。填写网站名称,选择一个配方 (Recipe)(例如 "Blog"),设置您的管理员用户名密码。数据库部分将自动识别为 SQLite,无需修改。点击 "Finish Setup" 完成安装。

Part 2: 后台基础配置与常规操作

安装完成后,我们来熟悉一下 Orchard Core 的后台。

2.1 设置中文内容支持

Orchard Core 的后台界面本身是英文的,但它拥有强大的多语言内容管理能力。

第一步:启用 "内容本地化" 模块

这是支持多语言内容的前提。

  1. 登录后台,在左侧菜单点击 Configuration -> Features
  2. 在搜索框中输入 localization
  3. 找到 Content Localization 模块,点击右侧的 Enable 按钮。

第二步:添加中文作为支持的语言

  1. 在左侧菜单点击 Configuration -> Settings -> Localization
  2. 在 "Supported Cultures" 部分,点击 Add or remove cultures
  3. 在列表中找到 Chinese (China) (zh-CN),选中它,然后点击 Add
  4. (可选)您可以将 zh-CN 设为默认语言。在 Default Culture 下拉菜单中选择 Chinese (China)
  5. 点击 Save 保存。

现在,您的网站已经具备了发布中文内容的能力。在创建或编辑文章时,您会看到一个语言切换的选项。

2.2 内容管理入门:发布第一篇博客

如果您在安装时选择了 "Blog" 配方,可以按以下步骤发布文章。

  1. 在左侧菜单点击 New -> Blog Post
  2. 填写标题:在 TitlePart 部分填写您的文章标题。
  3. 编写内容:在 MarkdownBodyPartHtmlBodyPart 中使用 Markdown 或富文本编辑器编写正文。
  4. 设置 URL:在右侧的 AutoroutePart 中,可以自定义文章的访问路径(URL Handle),如果不填会自动生成。
  5. 发布:点击右下角的 Publish 按钮即可发布。

2.3 更换和管理主题

Orchard Core 的外观由主题控制。

  1. 寻找主题:您可以从 Orchard Core Gallery 或其他社区寻找主题。
  2. 安装主题

    • 进入后台,点击 Configuration -> Themes
    • 在这里您可以看到已安装的主题。未来版本将支持直接从后台上传 zip 包或从 NuGet Feed 安装。
    • 目前,更通用的方式是通过项目源码引用或作为模块安装。
  3. 激活主题

    • 在主题列表中,找到您想使用的主题。
    • 点击 Make CurrentActivate 将其设置为当前网站使用的主题。

2.4 模块(Features)管理

模块是 Orchard Core 功能的基石,类似于其他 CMS 的“插件”。

  1. 浏览模块:点击 Configuration -> Features,您可以看到系统中所有可用的模块。
  2. 启用/禁用

    • Enable: 激活一个模块,其功能将对网站可用。例如,启用 Media 模块后,您才能在后台管理图片、视频等媒体文件。
    • Disable: 禁用一个模块,其功能将被移除。
    • 在列表中,您可以清楚地看到哪些模块已启用,哪些是某个主题或模块的依赖项。

总结

通过本指南,我们不仅解决了在特殊网络环境下无法部署 Orchard Core 的难题,还系统地学习了如何通过源码构建 Docker 镜像。更重要的是,我们完成了安装后的关键配置,并掌握了内容发布、主题管理等日常操作。希望这篇详尽的指南能帮助您开启愉快的 Orchard Core 之旅!