Dockerfile 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # ---------------------------------------------
  2. # Overleaf Community Edition (overleaf/overleaf)
  3. # ---------------------------------------------
  4. ARG SHARELATEX_BASE_TAG=sharelatex/sharelatex-base:latest
  5. FROM $SHARELATEX_BASE_TAG
  6. ENV SHARELATEX_CONFIG /etc/sharelatex/settings.coffee
  7. # Add required source files
  8. # -------------------------
  9. ADD ${baseDir}/bin /var/www/sharelatex/bin
  10. ADD ${baseDir}/doc /var/www/sharelatex/doc
  11. ADD ${baseDir}/tasks /var/www/sharelatex/tasks
  12. ADD ${baseDir}/Gruntfile.coffee /var/www/sharelatex/Gruntfile.coffee
  13. ADD ${baseDir}/package.json /var/www/sharelatex/package.json
  14. ADD ${baseDir}/package-lock.json /var/www/sharelatex/package-lock.json
  15. ADD ${baseDir}/services.js /var/www/sharelatex/config/services.js
  16. # Copy build dependencies
  17. # -----------------------
  18. ADD ${baseDir}/git-revision.sh /var/www/git-revision.sh
  19. ADD ${baseDir}/services.js /var/www/sharelatex/config/services.js
  20. # Checkout services
  21. # -----------------
  22. RUN cd /var/www/sharelatex \
  23. && npm ci \
  24. && grunt install \
  25. \
  26. # Cleanup not needed artifacts
  27. # ----------------------------
  28. && rm -rf /root/.cache /root/.npm $(find /tmp/ -mindepth 1 -maxdepth 1) \
  29. # Stores the version installed for each service
  30. # ---------------------------------------------
  31. && cd /var/www \
  32. && ./git-revision.sh > revisions.txt \
  33. \
  34. # Cleanup the git history
  35. # -------------------
  36. && rm -rf $(find /var/www/sharelatex -name .git)
  37. # Install npm dependencies
  38. # ------------------------
  39. RUN cd /var/www/sharelatex \
  40. && bash ./bin/install-services \
  41. \
  42. # Cleanup not needed artifacts
  43. # ----------------------------
  44. && rm -rf /root/.cache /root/.npm $(find /tmp/ -mindepth 1 -maxdepth 1)
  45. # Compile CoffeeScript
  46. # --------------------
  47. RUN cd /var/www/sharelatex \
  48. && bash ./bin/compile-services
  49. # Links CLSI synctex to its default location
  50. # ------------------------------------------
  51. RUN ln -s /var/www/sharelatex/clsi/bin/synctex /opt/synctex
  52. # Copy runit service startup scripts to its location
  53. # --------------------------------------------------
  54. ADD ${baseDir}/runit /etc/service
  55. # Configure nginx
  56. # ---------------
  57. ADD ${baseDir}/nginx/nginx.conf.template /etc/nginx/templates/nginx.conf.template
  58. ADD ${baseDir}/nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf
  59. # Configure log rotation
  60. # ----------------------
  61. ADD ${baseDir}/logrotate/sharelatex /etc/logrotate.d/sharelatex
  62. RUN chmod 644 /etc/logrotate.d/sharelatex
  63. # Copy Phusion Image startup scripts to its location
  64. # --------------------------------------------------
  65. COPY ${baseDir}/init_scripts/ /etc/my_init.d/
  66. # Copy app settings files
  67. # -----------------------
  68. COPY ${baseDir}/settings.coffee /etc/sharelatex/settings.coffee
  69. # Set Environment Variables
  70. # --------------------------------
  71. ENV WEB_API_USER "sharelatex"
  72. ENV SHARELATEX_APP_NAME "Overleaf Community Edition"
  73. ENV OPTIMISE_PDF "true"
  74. EXPOSE 80
  75. WORKDIR /
  76. ENTRYPOINT ["/sbin/my_init"]