Commit c73afcd8 authored by Henry Oswald's avatar Henry Oswald
Browse files
parents 7d9de6c2 c8395540
Loading
Loading
Loading
Loading
+29 −20
Original line number Diff line number Diff line
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,16 +16,23 @@ 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; \
	grunt compile:minify;
@@ -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

Gruntfile.coffee

0 → 100644
+38 −0
Original line number Diff line number Diff line
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
Original line number Diff line number Diff line
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.

git-revision.js

0 → 100644
+22 −0
Original line number Diff line number Diff line
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);
  }
}

package.json

0 → 100644
+11 −0
Original line number Diff line number Diff line
{
  "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"
  }
}
Loading