logo
0
0
WeChat Login
Forkfrommath-nwafu/share-latex, aheadmain8 commits, behindmain4 commits
feat: 更新开发环境配置和端口设置

Overleaf (ShareLaTeX) Community Edition - Full TeX Live Builder

本项目用于利用腾讯云 CNB (Cloud Native Build) 的构建能力,自动化构建包含 完整 TeX Live 环境 (scheme-full) 的 Overleaf 社区版 Docker 镜像。

核心目标

官方的 sharelatex 镜像只包含基础 TeX 包,导致:

  1. 缺少中文字体支持。
  2. 编译复杂论文时常报 package not found
  3. 每次重启容器需重新下载数 GB 的宏包,效率极低。

本仓库解决方案: 通过 CNB 流水线,将 scheme-full(全量包)预先打包进镜像中。部署时直接拉取即可使用,无需联网下载宏包,实现开箱即用


🏗 架构说明

本项目采用 构建与运行分离 的架构,确保数据安全与高性能:

  1. 公开仓库(本仓库)

    • 职责:只负责构建镜像。
    • 产物docker.cnb.cool/您的用户名/您的仓库名:full-v1
    • 安全不包含任何用户数据、数据库文件或敏感配置。
  2. 私有环境(部署端)

    • 职责:拉取镜像并运行服务。
    • 配置:通过 docker-compose.yml 注入环境变量和挂载持久化存储。

🚀 部署指南 (Run via Docker Compose)

在您的 私有机器私有 CNB 仓库 中,使用以下配置即可启动高性能 Overleaf 服务。

推荐配置 (High Performance)

适配 16核 32G 内存环境,已做针对性调优。

创建一个 docker-compose.yml 文件:

version: '2.2'

services:
  sharelatex:
    # ⚠️ 请修改为本项目构建出的实际镜像地址
    # 格式:docker.cnb.cool/<用户名>/<仓库名>:full-v1
    image: docker.cnb.cool/math-nwafu/share-latex:full-v1
    container_name: sharelatex
    restart: always
    depends_on:
      - mongo
      - redis
    ports:
      - "80:80"
    volumes:
      # 数据持久化
      - /persist/overleaf-data:/var/lib/sharelatex
      # 【优化】挂载内存盘加速编译临时文件读写
      - type: tmpfs
        target: /tmp
    environment:
      SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
      SHARELATEX_REDIS_HOST: redis
      SHARELATEX_BEHIND_PROXY: "true"
      SHARELATEX_SECURE_COOKIE: "false"
      
      # === 性能调优 (16C/32G) ===
      # 释放 Node.js 内存限制至 8GB
      NODE_OPTIONS: "--max-old-space-size=8192"
      # 延长编译超时时间至 5分钟
      SHARELATEX_COMPILE_TIMEOUT: "300"
      # 提高最大上传限制至 500MB
      SHARELATEX_MAX_UPLOAD_SIZE: "524288000"
      
      # === 敏感信息配置 (推荐使用环境变量) ===
      SHARELATEX_APP_NAME: "${SHARELATEX_APP_NAME}"
      SHARELATEX_ADMIN_EMAIL: "${SHARELATEX_ADMIN_EMAIL}"

  mongo:
    image: mongo:4.4
    container_name: mongo
    restart: always
    volumes:
      - /persist/mongo-data:/data/db
    # 限制 MongoDB 缓存为 8GB,预留内存给 TeX 编译
    command: --wiredTigerCacheSizeGB 8

  redis:
    image: redis:6
    container_name: redis
    restart: always
    volumes:
      - /persist/redis-data:/data
    # 开启 AOF 持久化
    command: redis-server --appendonly yes

About

No description, topics, or website provided.
Language
Dockerfile100%