فهرست منبع

Merge branch 'master' of https://github.com/sharelatex/sharelatex-docker-image

Henry Oswald 10 سال پیش
والد
کامیت
3f7623f970
6فایلهای تغییر یافته به همراه148 افزوده شده و 22 حذف شده
  1. 29 20
      server-ce/Dockerfile
  2. 38 0
      server-ce/Gruntfile.coffee
  3. 5 2
      server-ce/README.md
  4. 22 0
      server-ce/git-revision.js
  5. 11 0
      server-ce/package.json
  6. 43 0
      server-ce/services.js

+ 29 - 20
server-ce/Dockerfile

@@ -1,5 +1,7 @@
 FROM phusion/baseimage:0.9.16
 
+ENV baseDir .
+
 # Install Node.js and Grunt
 RUN curl -sL https://deb.nodesource.com/setup | sudo bash -
 RUN apt-get install -y build-essential nodejs
@@ -14,15 +16,22 @@ RUN adduser --system --group --home /var/www/sharelatex --no-create-home sharela
 
 # Install ShareLaTeX
 RUN apt-get install -y git python
-RUN git clone -b release https://github.com/sharelatex/sharelatex.git /var/www/sharelatex
-RUN cd /var/www/sharelatex && git pull origin release
+RUN git clone https://github.com/sharelatex/sharelatex.git /var/www/sharelatex
 
 # zlib1g-dev is needed to compile the synctex binaries in the CLSI during `grunt install`.
 RUN apt-get install -y zlib1g-dev
 
+
+ADD ${baseDir}/services.js /var/www/sharelatex/config/services.js
+ADD ${baseDir}/package.json /var/www/package.json
+ADD ${baseDir}/git-revision.js /var/www/git-revision.js
+RUN cd /var/www && npm install
+
 RUN cd /var/www/sharelatex; \
 	npm install; \
 	grunt install;
+
+RUN cd /var/www && node git-revision > revisions.txt
 	
 # Minify js assets
 RUN cd /var/www/sharelatex/web; \
@@ -32,11 +41,11 @@ RUN cd /var/www/sharelatex/web; \
 run apt-get update
 RUN apt-get install -y nginx;
 RUN rm /etc/nginx/sites-enabled/default
-ADD nginx/nginx.conf /etc/nginx/nginx.conf
-ADD nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf
+ADD ${baseDir}/nginx/nginx.conf /etc/nginx/nginx.conf
+ADD ${baseDir}/nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf
 
 RUN mkdir /etc/service/nginx
-ADD runit/nginx.sh /etc/service/nginx/run
+ADD ${baseDir}/runit/nginx.sh /etc/service/nginx/run
 
 # Set up ShareLaTeX services to run automatically on boot
 RUN mkdir /etc/service/chat-sharelatex; \
@@ -50,16 +59,16 @@ RUN mkdir /etc/service/chat-sharelatex; \
 	mkdir /etc/service/track-changes-sharelatex; \
 	mkdir /etc/service/web-sharelatex; 
 
-ADD runit/chat-sharelatex.sh             /etc/service/chat-sharelatex/run
-ADD runit/clsi-sharelatex.sh             /etc/service/clsi-sharelatex/run
-ADD runit/docstore-sharelatex.sh         /etc/service/docstore-sharelatex/run
-ADD runit/document-updater-sharelatex.sh /etc/service/document-updater-sharelatex/run
-ADD runit/filestore-sharelatex.sh        /etc/service/filestore-sharelatex/run
-ADD runit/real-time-sharelatex.sh        /etc/service/real-time-sharelatex/run
-ADD runit/spelling-sharelatex.sh         /etc/service/spelling-sharelatex/run
-ADD runit/tags-sharelatex.sh             /etc/service/tags-sharelatex/run
-ADD runit/track-changes-sharelatex.sh    /etc/service/track-changes-sharelatex/run
-ADD runit/web-sharelatex.sh              /etc/service/web-sharelatex/run
+ADD ${baseDir}/runit/chat-sharelatex.sh             /etc/service/chat-sharelatex/run
+ADD ${baseDir}/runit/clsi-sharelatex.sh             /etc/service/clsi-sharelatex/run
+ADD ${baseDir}/runit/docstore-sharelatex.sh         /etc/service/docstore-sharelatex/run
+ADD ${baseDir}/runit/document-updater-sharelatex.sh /etc/service/document-updater-sharelatex/run
+ADD ${baseDir}/runit/filestore-sharelatex.sh        /etc/service/filestore-sharelatex/run
+ADD ${baseDir}/runit/real-time-sharelatex.sh        /etc/service/real-time-sharelatex/run
+ADD ${baseDir}/runit/spelling-sharelatex.sh         /etc/service/spelling-sharelatex/run
+ADD ${baseDir}/runit/tags-sharelatex.sh             /etc/service/tags-sharelatex/run
+ADD ${baseDir}/runit/track-changes-sharelatex.sh    /etc/service/track-changes-sharelatex/run
+ADD ${baseDir}/runit/web-sharelatex.sh              /etc/service/web-sharelatex/run
 
 # Install TexLive
 RUN apt-get install -y wget
@@ -86,14 +95,14 @@ RUN apt-get install -y unzip
 RUN apt-get install -y imagemagick optipng
 
 # phusion/baseimage init script
-ADD 00_regen_sharelatex_secrets.sh  /etc/my_init.d/00_regen_sharelatex_secrets.sh
-ADD 00_make_sharelatex_data_dirs.sh /etc/my_init.d/00_make_sharelatex_data_dirs.sh
-ADD 00_set_docker_host_ipaddress.sh /etc/my_init.d/00_set_docker_host_ipaddress.sh
-ADD 99_migrate.sh /etc/my_init.d/99_migrate.sh
+ADD ${baseDir}/00_regen_sharelatex_secrets.sh  /etc/my_init.d/00_regen_sharelatex_secrets.sh
+ADD ${baseDir}/00_make_sharelatex_data_dirs.sh /etc/my_init.d/00_make_sharelatex_data_dirs.sh
+ADD ${baseDir}/00_set_docker_host_ipaddress.sh /etc/my_init.d/00_set_docker_host_ipaddress.sh
+ADD ${baseDir}/99_migrate.sh /etc/my_init.d/99_migrate.sh
 
 # Install ShareLaTeX settings file
 RUN mkdir /etc/sharelatex
-ADD settings.coffee /etc/sharelatex/settings.coffee
+ADD ${baseDir}/settings.coffee /etc/sharelatex/settings.coffee
 ENV SHARELATEX_CONFIG /etc/sharelatex/settings.coffee
 
 EXPOSE 80

+ 38 - 0
server-ce/Gruntfile.coffee

@@ -0,0 +1,38 @@
+services = require('./services')
+
+module.exports = (grunt) ->
+        
+        tag = grunt.option("tag") or 'latest'
+        repos = []
+        for service in services
+                url = service.repo.split('/')
+                owner = url[3]
+                repo = url[4].replace('.git','')
+                repos.push "/repos/#{owner}/#{repo}/git/refs/heads/#{service.version}"
+        
+        grunt.initConfig
+                docker_io:
+                        default_options:
+                                options:
+                                        dockerFileLocation: '.'
+                                        buildName: 'sharelatex'
+                                        tag: grunt.option('tag') or 'latest'
+                                        push: grunt.option('push') or false
+                                        force: true
+
+                github:
+                        combinedRevisions:
+                                options:
+                                        #oAuth:
+                                        #        access_token: ''
+                                        concat: true
+                                src: repos
+                                dest: 'version/' + tag + '.json'
+
+        grunt.loadNpmTasks 'grunt-docker-io'
+        grunt.loadNpmTasks 'grunt-github-api'
+
+        grunt.registerTask 'build', ['docker_io', 'github']
+        grunt.registerTask 'gitrev', ['github']
+
+        grunt.registerTask 'default', ['build']

+ 5 - 2
server-ce/README.md

@@ -1,4 +1,4 @@
-ShareLaTeX Comunity Docker Image
+ShareLaTeX Community Docker Image
 =======================
 
 **Please read this entire file before installing ShareLaTeX via Docker. It's only
@@ -34,9 +34,12 @@ If you want to permanently remove ShareLaTeX from your docker containers:
 docker rm sharelatex
 ```
 
+### Operating systems
+We recommend a debian based operating system such as Ubuntu for ShareLaTeX, this is what the software has been developed using and most people use when running ShareLaTeX.
+
 ### Mongo and Redis
 
-ShareLaTeX depends on [MongoDB](http://www.mongodb.org/) (must be 2.4 or later), and
+ShareLaTeX depends on [MongoDB](http://www.mongodb.org/) (must be 2.4 or later, 3.x is recommended), and
 [Redis](http://redis.io/) (must be version 2.6.12 or later).
 These should be running on the host system.
 

+ 22 - 0
server-ce/git-revision.js

@@ -0,0 +1,22 @@
+var simple = require('simple-git');
+var services = require('./sharelatex/config/services');
+const fs = require('fs');
+
+function print_latest(repoDir) {
+  git = simple(repoDir);
+  opt = [];
+  opt['max-count'] = 1;
+  git.log(opt, function(err, log) {
+      if (!err) {
+        console.log(repoDir + ',' + log.latest.hash);
+      }
+  })
+}
+
+for (id in services) {
+  service = services[id];
+  dirPath = __dirname + '/sharelatex/'+service.name;
+  if (fs.existsSync(dirPath)) {
+    print_latest(dirPath);
+  }
+}

+ 11 - 0
server-ce/package.json

@@ -0,0 +1,11 @@
+{
+  "name": "none",
+  "author": "none",
+  "description": "none",
+  "dependencies": {
+    "grunt": "^0.4.5",
+    "grunt-docker-io": "^0.7.0",
+    "simple-git": "^1.32.1",
+    "grunt-github-api": "^0.2.3"
+  }
+}

+ 43 - 0
server-ce/services.js

@@ -0,0 +1,43 @@
+module.exports = 
+
+[{
+	name: "web",
+	repo: "https://github.com/sharelatex/web-sharelatex.git",
+	version: "master"
+}, {
+	name: "real-time",
+	repo: "https://github.com/sharelatex/real-time-sharelatex.git",
+	version: "master"
+}, {
+	name: "document-updater",
+	repo: "https://github.com/sharelatex/document-updater-sharelatex.git",
+	version: "master"
+}, {
+	name: "clsi",
+	repo: "https://github.com/sharelatex/clsi-sharelatex.git",
+	version: "master"
+}, {
+	name: "filestore",
+	repo: "https://github.com/sharelatex/filestore-sharelatex.git",
+	version: "master"
+}, {
+	name: "track-changes",
+	repo: "https://github.com/sharelatex/track-changes-sharelatex.git",
+	version: "master"
+}, {
+	name: "docstore",
+	repo: "https://github.com/sharelatex/docstore-sharelatex.git",
+	version: "master"
+}, {
+	name: "chat",
+	repo: "https://github.com/sharelatex/chat-sharelatex.git",
+	version: "master"
+}, {
+	name: "tags",
+	repo: "https://github.com/sharelatex/tags-sharelatex.git",
+	version: "master"
+}, {
+	name: "spelling",
+	repo: "https://github.com/sharelatex/spelling-sharelatex.git",
+	version: "master"
+}]