Dockerfile 2.9 KB

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