guideDocker-compose

为了提供稳定性和可扩展性,我们建议在生产环境中使用容器编排。
查看 示例,了解如何在生产环境中运行协作服务器本地部署。

安装协作服务器本地部署需要有效的许可证密钥。
联系我们 获取试用许可证密钥。

出于评估和测试目的,您可以按照 快速入门 指南进行操作,我们提供易于使用的脚本,用于在本地机器上设置协作服务器本地部署所需的所有基础设施。

# 使用 Docker 容器设置应用程序

按照以下步骤使用 Docker 容器安装 CKEditor 协作服务器本地部署。

  1. 使用来自 CKEditor 生态系统客户仪表板 的说明登录到 协作服务器本地部署 Docker 注册表并拉取 Docker 镜像。
  2. 使用 dockerdocker-compose 容器化应用程序。
  3. 通过 云服务管理面板 创建具有 访问密钥环境。使用此数据 创建令牌端点运行测试
  4. 运行测试以验证系统是否正常运行 - 请参阅 使用 Docker 运行测试 指南。
  5. 在 CKEditor 协作 Web 应用程序中配置服务器端点以与协作服务器本地部署应用程序通信 - 请参阅 设置端点 指南。

# 使用 docker-compose 容器化示例

按照以下步骤使用 docker-compose 容器化应用程序。

请注意,docker-compose 适用于开发目的。但是,这并不符合我们针对生产环境的 架构建议。这就是我们创建 示例脚本 并添加有关 AWS 推荐基础设施的信息的原因。

# 使用 MySQL 的示例

  1. 创建 docker-compose.yml 文件
    version: "2.2"
    services:
      mysql-database:
        image: mysql:8.0.34
        platform: linux/amd64
        environment:
          MYSQL_ROOT_PASSWORD: password
        volumes:
          - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
        healthcheck: # Define healthcheck to be able to use the `service_healthy` condition.
          test: ["CMD-SHELL", "exit | mysql -h localhost -P 3306 -u root -p$$MYSQL_ROOT_PASSWORD" ]
          interval: 10s
          timeout: 30s
          retries: 5
    
      redis:
        image: redis:6.2.7
    
      ckeditor-cs:
        image: docker.cke-cs.com/cs:[version]
        depends_on:
         redis:
           condition: service_started
         mysql-database:
           condition: service_healthy # Make sure your database is ready for migration.
        ports:
          - "8000:8000"
        restart: always
        init: true
        environment:
          DATABASE_HOST: mysql-database
          DATABASE_USER: root
          DATABASE_PASSWORD: password
          REDIS_HOST: redis
          ENVIRONMENTS_MANAGEMENT_SECRET_KEY: secret
          LICENSE_KEY: your_license_key
          STORAGE_DRIVER: filesystem
          STORAGE_LOCATION: /var/cs/easyimage
        volumes:
          - ~/easyimage_files:/var/cs/easyimage
    
  2. 创建 init.sql 文件
    CREATE DATABASE `cs-on-premises`
      DEFAULT CHARACTER SET utf8mb4
      DEFAULT COLLATE utf8mb4_bin;
    
  3. 运行
    docker-compose up
    

# 使用 PostgreSQL 的示例

  1. 创建 docker-compose.yml 文件
    version: "2.2"
    services:
      postgres-database:
        image: postgres:12.12
        environment:
          - POSTGRES_PASSWORD=password
        volumes:
          - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
        healthcheck: # Define healthcheck to be able to use the `service_healthy` condition.
          test: pg_isready -U postgres
          interval: 10s
          timeout: 30s
          retries: 5
    
      redis:
        image: redis:6.2.7
    
      ckeditor-cs-postgres:
        image: docker.cke-cs.com/cs:[version]
        depends_on:
         redis:
           condition: service_started
         postgres-database:
           condition: service_healthy # Make sure your database is ready for migration.
        ports:
          - "8000:8000"
        restart: always
        init: true
        environment:
          DATABASE_DRIVER: postgres
          DATABASE_HOST: postgres-database
          DATABASE_PORT: 5432
          DATABASE_USER: postgres
          DATABASE_PASSWORD: password
          DATABASE_DATABASE: cksource
          DATABASE_SCHEMA: cke-cs
          REDIS_HOST: redis
          ENVIRONMENTS_MANAGEMENT_SECRET_KEY: secret
          LICENSE_KEY: your_license_key
          STORAGE_DRIVER: filesystem
          STORAGE_LOCATION: /var/cs/easyimage
        volumes:
          - ~/easyimage_files:/var/cs/easyimage
    
  2. 创建 init.sql 文件
    CREATE DATABASE "cksource";
    \connect "cksource";
    CREATE SCHEMA "cke-cs";
    
  3. 运行
    docker-compose up
    

# 使用协作工作器的示例

步骤与常规 CKEditor 协作服务器本地部署安装类似。

我们使用 docker-compose 作为示例配置,解释如何配置服务。在生产环境中,我们建议使用由容器编排系统(如 Docker Swarm、Kubernetes、ECS、GKE、AKS 或 OpenShift)管理的集群。

  1. 如果您已经拥有 docker-compose.yml 文件,则只需添加 worker-cs 服务,并在 ckeditor-cs 中将 USE_BUILT_IN_COLLABORATION_WORKER 环境变量设置为 false。否则,使用以下内容创建该文件
version: "3.7"
services:
  mysql-database:
    image: mysql:8.0.34
    platform: linux/amd64
    environment:
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
    healthcheck: # Define healthcheck to be able to use the `service_healthy` condition.
      test: ["CMD-SHELL", "exit | mysql -h localhost -P 3306 -u root -p$$MYSQL_ROOT_PASSWORD" ]
      interval: 10s
      timeout: 30s
      retries: 5

  redis:
    image: redis:6.2.7

  ckeditor-cs:
    image: docker.cke-cs.com/cs:[version]
    depends_on:
      redis:
        condition: service_started
      mysql-database:
        condition: service_healthy # Make sure your database is ready for migration.
    ports:
      - "8000:8000"
    restart: always
    init: true
    environment:
      DATABASE_DRIVER: mysql
      DATABASE_HOST: mysql-database
      DATABASE_USER: root
      DATABASE_PASSWORD: password
      REDIS_HOST: redis
      ENVIRONMENTS_MANAGEMENT_SECRET_KEY: secret
      LICENSE_KEY: your_license_key
      STORAGE_DRIVER: filesystem
      STORAGE_LOCATION: /var/cs/easyimage
      USE_BUILT_IN_COLLABORATION_WORKER: "false"
    volumes:
      - ~/easyimage_files:/var/cs/easyimage

  worker-cs:
    image: docker.cke-cs.com/cs-worker:[version]
    depends_on:
      redis:
        condition: service_started
      mysql-database:
        condition: service_healthy # Make sure your database is ready for migration.
    restart: always
    init: true
    environment:
      DATABASE_DRIVER: mysql
      DATABASE_HOST: mysql-database
      DATABASE_USER: root
      DATABASE_PASSWORD: password
      REDIS_HOST: redis

cscs-worker 镜像的版本应相同。
您还应将服务连接到相同的 Redis 和 SQL 数据库。

  1. 创建 init.sql 文件

      CREATE DATABASE `cs-on-premises`
      DEFAULT CHARACTER SET utf8mb4
      DEFAULT COLLATE utf8mb4_bin;
    
  2. 运行

    docker-compose up
    

# 注意

  • 如果您使用文件系统进行图像存储,则应始终挂载 Docker 卷以在 Docker 容器被删除时保留上传的文件。您可以在此处找到有关 Easy Image 功能存储的更多信息 此处
  • 使用环境变量配置应用程序。请参阅 环境变量 指南。
  • 出于安全原因,您应使用唯一且难以猜测的字符串覆盖 ENVIRONMENTS_MANAGEMENT_SECRET_KEY 变量。
  • 如果没有正确的 LICENSE_KEY,应用程序将无法启动。
  • 如果您大量使用协作功能(如文档存储、导入和导出或连接优化器),我们建议使用 协作工作器 来提高可靠性。

# 使用 docker 容器化示例

启动 Docker 容器

docker run --init -p 8000:8000 -v /path/to/your/dir:/var/cs/easyimage -e DATABASE_HOST=[your_mysql_host] -e DATABASE_USER=[your_mysql_user] -e DATABASE_PASSWORD=[your_mysql_password] -e REDIS_HOST=[your_redis_host] -e LICENSE_KEY=[your_license_key] -e STORAGE_DRIVER=filesystem -e STORAGE_LOCATION=/var/cs/easyimage docker.cke-cs.com/cs:[version]

注意

  • 如果您使用文件系统进行图像存储,则应始终挂载 docker 卷 -v /path/to/your/dir:/var/cs/easyimage 以在 Docker 容器被删除时保留上传的文件。您可以在此处找到有关 Easy Image 功能存储的更多信息 此处
  • 使用环境变量配置应用程序。请参阅 配置指南。示例
    • 如果 SQL 数据库和 Redis 托管在 192.168.118.27 上,则应通过 DATABASE_HOSTREDIS_HOST 变量传递地址
      docker run --init -p 8000:8000 -v ~/easyimage_files:/var/cs/easyimage -e DATABASE_HOST=192.168.118.27 -e REDIS_HOST=192.168.118.27 -e DATABASE_USER=root -e DATABASE_PASSWORD=root_password -e LICENSE_KEY=[your_license_key] -e STORAGE_DRIVER=filesystem -e STORAGE_LOCATION=/var/cs/easyimage docker.cke-cs.com/cs:[version]
      
    • 如果您要更改应用程序提供服务的端口为 5000,请覆盖 APPLICATION_HTTP_PORT 变量并更改公开的端口
      docker run --init -p 5000:5000 -v ~/easyimage_files:/var/cs/easyimage -e APPLICATION_HTTP_PORT=5000 -e DATABASE_HOST=192.168.118.27 -e REDIS_HOST=192.168.118.27 -e DATABASE_USER=root -e DATABASE_PASSWORD=root_password -e LICENSE_KEY=[your_license_key] -e STORAGE_DRIVER=filesystem -e STORAGE_LOCATION=/var/cs/easyimage docker.cke-cs.com/cs:[version]
      
  • 出于安全原因,您应使用唯一且难以猜测的字符串覆盖 ENVIRONMENTS_MANAGEMENT_SECRET_KEY 变量。
  • 如果没有正确的 LICENSE_KEY,应用程序将无法启动。