用Docker配置各类服务型的东西最简单快捷了，所以准备Overleaf时，我优选选择了Docker形式。 但实际上docker有很多坑，那就是数据安全。容器只要一重建，原来里面的内容全部丢失，祈祷着服务(器)不重启是不现实的，所以使用docker的第一要务就是把自己可能保存的内容，都通过映射的形式，直接存在主机上。具体如何做映射，后面有实例，如果你已经领会了，后面可以全都不用看了。 但是我还是记录一下我的安装过程，给大家避坑。 网上的方案很多，但大同小异，时间不同，也有一些变化。我这里不是手把手的教程，但是要点都在，如果真的不动需要咨询的，那就只能想办法请我喝咖啡了。 方法1，直接使用别人提供的单文件镜像，只通过docker启动。docker的安装自己解决，各个版本的linux多少都有点不一样。我是在我的网站服务器上，直接通过宝塔页面安装的docker管理器，但只在命令行终端下使用docker指令。 docker pull kingsleyluoxin/sharelatex:full # OR # docker pull kingsleyluoxin/sharelatex:latest docker run -p 8080:80 -d kingsleyluoxin/sharelatex:full 这样访问自己服务器ip的8080即可使用了。其中full支持中文，latest不支持中文。 原始出处在[这里][1]，但比较可惜的是，几个很核心的地方都没有讲，就是文件连接，然后管理员账号创建也失效了，launchpad 页面并不能提示注册管理员。然后邮件服务器是否正常不详，一些修饰性参数是否可以引入不详。 而我没有使用这个镜像的主要原因是没安装Adobe字体，我还是要进去安装，不如从头折腾一下，以免有什么隐患。 推荐使用该镜像的人群，单人，内网，不会忘记密码，有定期下载自己工程另外保存的习惯，或者一次性使用完结束。 如果希望长期使用，还是自己走以便比较好。 在开展第二种方法之前，说一下管理员创建的问题。 如果你也遇到了和我一样，不管是哪个条件下，网页没提示注册管理员，那么，就需要登录到docker中进行创建。 进入指定docker的命令行 docker exec -it sharelatex bash 然后切换目录，执行创建指令 cd /var/www/sharelatex grunt user:create-admin --email=admin@university.edu 这里网上大多数的页面都写错或者复制错了，--email后面是等号=连接地址，而非空格。 执行后，会提示一个网址让自己重设密码，只复制其路径部分，贴在自己实际网址含端口都后面，设置完密码，你就有管理员，可以正常使用了。 下面开始第二种方法，docker-compose，在此之前，还要明确几个问题，容器被重建时，原来内部的数据一定会被清空，这点各位消息。而何时会重建，1. pull的镜像有更新，一般不pull应该无所谓。2. docker build很危险，docker-compose up也是，有配置变更就重建。 3. docker rm 之后。 所以呢，我每次更新部分内容后，都commit一次，生成本机私有的镜像。 下载官方的[yml文件][2]，放到一个存放本项目数据的目录里。然后创建三个目录。 mkdir sharelatex cd sharelatex mkdir sharelatex_data mkdir mongo_data mkdir redis_data 然后编辑yml文件里关于文件映射的部分，建议写绝对路径。 volumes: - /data/sharelatex/sharelatex_data:/var/lib/sharelatex 三处，显然sharelatex_data和mongo_data是必须的，而Redis因为不怎么存盘，所以无所谓。 有了这个链接，至少保证你的用户和用户数据在容器外，容器更新，原则上不伤害数据。 然后是yum里面其他关于修饰性的调整，email设置等。感觉sharelatex的功能很精简，用户管理能力极差，所以最好邮件配置成功，以便自己找回密码。 然后，在该目录下运行docker-compose up, 不要加-d的选项，这样报错能看到，好解决。等没有错误后，想用-d也是可以。 这是3个容器都创建了，而且之后数据库和Redis基本不会重建，而sharelate，每次调整描述性的变量，邮箱配置等，都会重建，所以特别小心。 如果你不需要中文，只用pdflatex，现在就结束了。如果还需要中文，和Xelatex，请继续。 进入指定docker的命令行 docker exec -it sharelatex bash 然后更新texlive # 更换texlive的下载源，例如国内的清华源 $ tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/ # 安装完整版texlive（漫长的等待，不要让shell断开） $ tlmgr install scheme-full 那个等待真的挺长，我的服务器小带宽，大概搞了半小时。这个时候可以commit一次。 docker commit a404c6c174a2 sharelatex-liang:scheme-full id用docker ps查看找一下。 然后就是复制中文字体到docker中，弄到主机上的过程自己解决。 # 把压缩文件传到sharelatex容器的root目录下 $ docker cp winfonts.tar.gz sharelatex:/root 然后在进入容器，执行下面操作 # 通过安装wqy字体同时安装xfont工具，这个操作之前可能需要apt-get update一下，更新下源的缓冲，要不然找不到wqy字体 $ apt-get install xfonts-wqy # 进入root目录，解压winfonts.tar.gz，并剪切到系统字体目录下 $ cd ~ $ tar -zxvf winfonts.tar.gz $ mv winfonts /usr/share/fonts/ # 进入字体目录安装字体 $ cd /usr/share/fonts/winfonts $ mkfontscale $ mkfontdir $ fc-cache -fv # 检查确认中文字体安装成功 $ fc-list :lang=zh-cn 这个时候再commit一次， docker commit a404c6c174a2 sharelatex-liang:full 这样你专属的镜像就出来了，之后吧yml中的镜像改为上面的版本。 image: sharelatex-liang:full 这样，在本机docker-compose up基本不会丢失东西了。 但实际上经过上面这么一圈折腾，很可能编译任何一个文件都包服务器错误。这个时候，我也没找到明确原因。停止服务，清空此前在主机上建立的三个目录里面的内容，然后docker-compose start，在进入主机或网页，创建一次管理员。 万事大吉。 最后，我已经把自己的容器推到hub.docker.com上了，所以，并且试装测试都成功。 你只要修改自己的yml文件即可。 将镜像改为： image: ftliang/slatex:full 即可, 当然，综合打包之后，还是挺大的，未压缩显示有7.8G [1]: https://blog.csdn.net/kingsleyluoxin/article/details/105613144 [2]: https://raw.githubusercontent.com/sharelatex/sharelatex/master/docker-compose.yml