mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge branch 'master' of https://github.com/sharelatex/sharelatex-docker-image
This commit is contained in:
commit
4f24a228b5
7 changed files with 153 additions and 25 deletions
49
Dockerfile
49
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,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
|
||||
|
|
38
Gruntfile.coffee
Normal file
38
Gruntfile.coffee
Normal file
|
@ -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']
|
11
README.md
11
README.md
|
@ -1,4 +1,4 @@
|
|||
ShareLaTeX 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.
|
||||
|
||||
|
@ -142,7 +145,7 @@ the package name.
|
|||
|
||||
### Configuration Options
|
||||
|
||||
You can pass configuration options to ShareLaTeX as environment variables:
|
||||
You can pass the core configuration options to ShareLaTeX as environment variables:
|
||||
|
||||
```
|
||||
$ docker run -d \
|
||||
|
@ -167,6 +170,8 @@ configured correctly!
|
|||
* `SHARELATEX_SECURE_COOKIE`: Set this to something non-zero to use a secure cookie.
|
||||
Only use this if your ShareLaTeX instance is running behind a reverse proxy with SSL configured.
|
||||
|
||||
Other settings such as email setup need to be edited in the docker container at /etc/sharelatex/settings.coffee. We realise this is not an ideal solution and are working on a more streamlined settings file approach.
|
||||
|
||||
### Creating and Managing users
|
||||
|
||||
Uun the following command to create your first user and make them an admin:
|
||||
|
|
22
git-revision.js
Normal file
22
git-revision.js
Normal file
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@ server {
|
|||
set $static_path /var/www/sharelatex/web/public;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:3000;
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
@ -17,7 +17,7 @@ server {
|
|||
}
|
||||
|
||||
location /socket.io {
|
||||
proxy_pass http://localhost:3026;
|
||||
proxy_pass http://127.0.0.1:3026;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
|
11
package.json
Normal file
11
package.json
Normal file
|
@ -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
services.js
Normal file
43
services.js
Normal file
|
@ -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"
|
||||
}]
|
Loading…
Reference in a new issue