> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 从 docker-compose.yml 迁移到 Toolkit

> 将 Overleaf Docker Compose 部署迁移到 Toolkit。

如果你目前通过 `docker-compose.yml` 文件使用 Docker Compose，迁移到 Toolkit 可以让本地部署版 Overleaf 的部署、升级和维护变得更加容易。

要进行迁移，你需要将现有的 Docker Compose 设置转换为 Toolkit 所使用的格式。此过程包括将现有配置复制到 Toolkit 中。

本指南将逐步引导你完成整个过程，确保从 Docker Compose 平稳迁移到 Toolkit。

<Info>
  这些说明适用于 v4.x 及更早版本。因此所有变量都使用 `SHARELATEX_` 前缀，而不是 `OVERLEAF_`。
</Info>

<Steps>
  <Step title="克隆 Toolkit 仓库">
    首先，将 Toolkit 仓库克隆到宿主机：

    ```bash theme={null}
    git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit
    ```

    接下来运行 `bin/init` 命令，使用默认配置初始化 Toolkit。
  </Step>

  <Step title="设置镜像和版本">
    在典型的 `docker-compose.yml` 中，镜像和版本定义在组件描述中，例如：

    ```yaml theme={null}
    version: '2.2'
    services:
        sharelatex:
            restart: always
            # Server Pro users:
            # image: quay.io/sharelatex/sharelatex-pro
            image: sharelatex/sharelatex:3.5.13
    ```

    使用 Toolkit 时，镜像名称会自动解析；唯一的要求是在 **config/overleaf.rc** 中设置 `SERVER_PRO=true` 以选择 Server Pro 镜像，或设置 `SERVER_PRO=false` 以使用 Community Edition。

    所需的 Server Pro/Community Edition 版本号在 **config/version** 文件中设置。Toolkit 需要一个具体的版本号，例如 `4.2.3`。如果你使用的是 `latest`，可以使用 `bin/images` 查找本地 `latest` 版本的镜像 ID，然后通过 2.x.x、3.x.x、4.x.x 或 5.x.x 的发布说明将镜像 ID 对应到具体版本。

    如果你从自己的内部镜像仓库获取镜像，可以通过设置 `OVERLEAF_IMAGE_NAME` 来覆盖 Toolkit 使用的镜像。你无需指定标签，因为 Toolkit 会根据 **config/version** 文件自动添加。
  </Step>

  <Step title="配置外部访问">
    默认情况下，Overleaf 将监听 `127.0.0.1:80`，只允许来自 Docker 宿主机的流量。

    要允许外部访问，请在 [**config/overleaf.rc**](/zh-CN/on-premises/configuration/overleaf-toolkit/environment-variables) 文件中设置 `OVERLEAF_LISTEN_IP` 和 `OVERLEAF_PORT`。
  </Step>

  <Step title="迁移环境变量">
    你的 `docker-compose.yml` 中的 `sharelatex` 服务很可能定义了一组环境变量，例如：

    ```yaml theme={null}
    environment:
        OVERLEAF_APP_NAME: Overleaf Community Edition
        OVERLEAF_PROXY_LEARN: 'true'
        …
    ```

    将这些变量复制到 Toolkit 的 [**config/variables.env**](/zh-CN/on-premises/configuration/overleaf-toolkit/environment-variables) 文件中，并确保采用以下格式（使用 `=` 而不是 `:`）：

    ```env theme={null}
    OVERLEAF_APP_NAME=Overleaf Community Edition
    OVERLEAF_PROXY_LEARN=true
    ```

    使用 Toolkit 时的例外 / 差异：

    * 以 `SANDBOXED_COMPILES_` 和 `DOCKER_RUNNER` 开头的变量不再需要。要启用沙盒编译，请在 **config/overleaf.rc** 文件中设置 `SIBLING_CONTAINERS_ENABLED=true`。
    * 以 `OVERLEAF_MONGO_`、`OVERLEAF_REDIS_` 开头的变量以及 `REDIS_HOST` 变量不再需要。MongoDB 和 Redis 现在在 **config/overleaf.rc** 文件中通过 `MONGO_URL`、`REDIS_HOST` 和 `REDIS_PORT` 进行配置。

    有关高级配置选项，请参阅 [config/overleaf.rc](/zh-CN/on-premises/configuration/overleaf-toolkit/environment-variables) 文档。
  </Step>

  <Step title="NGINX 代理">
    有关如何迁移 `nginx` 的说明，请参见 [TLS 代理文档](/zh-CN/on-premises/configuration/overleaf-toolkit/tls-proxy)：
  </Step>

  <Step title="数据卷">
    在 **config/overleaf.rc** 中设置数据卷的位置：

    #### ShareLaTeX

    将 `OVERLEAF_DATA_PATH` 设置为 `sharelatex` 容器所使用数据卷的位置。

    #### MongoDB

    将 `MONGO_DATA_PATH` 设置为 `mongo` 容器所使用数据卷的位置。

    #### Redis

    将 `REDIS_DATA_PATH` 设置为 `redis` 容器所使用数据卷的位置。
  </Step>
</Steps>

有关更多详细信息和高级配置，请查阅上面链接的相关 Toolkit 配置文档。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.