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
d5b133de1a
7 changed files with 153 additions and 25 deletions
|
@ -1,5 +1,7 @@
|
||||||
FROM phusion/baseimage:0.9.16
|
FROM phusion/baseimage:0.9.16
|
||||||
|
|
||||||
|
ENV baseDir .
|
||||||
|
|
||||||
# Install Node.js and Grunt
|
# Install Node.js and Grunt
|
||||||
RUN curl -sL https://deb.nodesource.com/setup | sudo bash -
|
RUN curl -sL https://deb.nodesource.com/setup | sudo bash -
|
||||||
RUN apt-get install -y build-essential nodejs
|
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
|
# Install ShareLaTeX
|
||||||
RUN apt-get install -y git python
|
RUN apt-get install -y git python
|
||||||
RUN git clone -b release https://github.com/sharelatex/sharelatex.git /var/www/sharelatex
|
RUN git clone https://github.com/sharelatex/sharelatex.git /var/www/sharelatex
|
||||||
RUN cd /var/www/sharelatex && git pull origin release
|
|
||||||
|
|
||||||
# zlib1g-dev is needed to compile the synctex binaries in the CLSI during `grunt install`.
|
# zlib1g-dev is needed to compile the synctex binaries in the CLSI during `grunt install`.
|
||||||
RUN apt-get install -y zlib1g-dev
|
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; \
|
RUN cd /var/www/sharelatex; \
|
||||||
npm install; \
|
npm install; \
|
||||||
grunt install;
|
grunt install;
|
||||||
|
|
||||||
|
RUN cd /var/www && node git-revision > revisions.txt
|
||||||
|
|
||||||
# Minify js assets
|
# Minify js assets
|
||||||
RUN cd /var/www/sharelatex/web; \
|
RUN cd /var/www/sharelatex/web; \
|
||||||
grunt compile:minify;
|
grunt compile:minify;
|
||||||
|
@ -32,11 +41,11 @@ RUN cd /var/www/sharelatex/web; \
|
||||||
run apt-get update
|
run apt-get update
|
||||||
RUN apt-get install -y nginx;
|
RUN apt-get install -y nginx;
|
||||||
RUN rm /etc/nginx/sites-enabled/default
|
RUN rm /etc/nginx/sites-enabled/default
|
||||||
ADD nginx/nginx.conf /etc/nginx/nginx.conf
|
ADD ${baseDir}/nginx/nginx.conf /etc/nginx/nginx.conf
|
||||||
ADD nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf
|
ADD ${baseDir}/nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf
|
||||||
|
|
||||||
RUN mkdir /etc/service/nginx
|
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
|
# Set up ShareLaTeX services to run automatically on boot
|
||||||
RUN mkdir /etc/service/chat-sharelatex; \
|
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/track-changes-sharelatex; \
|
||||||
mkdir /etc/service/web-sharelatex;
|
mkdir /etc/service/web-sharelatex;
|
||||||
|
|
||||||
ADD runit/chat-sharelatex.sh /etc/service/chat-sharelatex/run
|
ADD ${baseDir}/runit/chat-sharelatex.sh /etc/service/chat-sharelatex/run
|
||||||
ADD runit/clsi-sharelatex.sh /etc/service/clsi-sharelatex/run
|
ADD ${baseDir}/runit/clsi-sharelatex.sh /etc/service/clsi-sharelatex/run
|
||||||
ADD runit/docstore-sharelatex.sh /etc/service/docstore-sharelatex/run
|
ADD ${baseDir}/runit/docstore-sharelatex.sh /etc/service/docstore-sharelatex/run
|
||||||
ADD runit/document-updater-sharelatex.sh /etc/service/document-updater-sharelatex/run
|
ADD ${baseDir}/runit/document-updater-sharelatex.sh /etc/service/document-updater-sharelatex/run
|
||||||
ADD runit/filestore-sharelatex.sh /etc/service/filestore-sharelatex/run
|
ADD ${baseDir}/runit/filestore-sharelatex.sh /etc/service/filestore-sharelatex/run
|
||||||
ADD runit/real-time-sharelatex.sh /etc/service/real-time-sharelatex/run
|
ADD ${baseDir}/runit/real-time-sharelatex.sh /etc/service/real-time-sharelatex/run
|
||||||
ADD runit/spelling-sharelatex.sh /etc/service/spelling-sharelatex/run
|
ADD ${baseDir}/runit/spelling-sharelatex.sh /etc/service/spelling-sharelatex/run
|
||||||
ADD runit/tags-sharelatex.sh /etc/service/tags-sharelatex/run
|
ADD ${baseDir}/runit/tags-sharelatex.sh /etc/service/tags-sharelatex/run
|
||||||
ADD runit/track-changes-sharelatex.sh /etc/service/track-changes-sharelatex/run
|
ADD ${baseDir}/runit/track-changes-sharelatex.sh /etc/service/track-changes-sharelatex/run
|
||||||
ADD runit/web-sharelatex.sh /etc/service/web-sharelatex/run
|
ADD ${baseDir}/runit/web-sharelatex.sh /etc/service/web-sharelatex/run
|
||||||
|
|
||||||
# Install TexLive
|
# Install TexLive
|
||||||
RUN apt-get install -y wget
|
RUN apt-get install -y wget
|
||||||
|
@ -86,14 +95,14 @@ RUN apt-get install -y unzip
|
||||||
RUN apt-get install -y imagemagick optipng
|
RUN apt-get install -y imagemagick optipng
|
||||||
|
|
||||||
# phusion/baseimage init script
|
# phusion/baseimage init script
|
||||||
ADD 00_regen_sharelatex_secrets.sh /etc/my_init.d/00_regen_sharelatex_secrets.sh
|
ADD ${baseDir}/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 ${baseDir}/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 ${baseDir}/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}/99_migrate.sh /etc/my_init.d/99_migrate.sh
|
||||||
|
|
||||||
# Install ShareLaTeX settings file
|
# Install ShareLaTeX settings file
|
||||||
RUN mkdir /etc/sharelatex
|
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
|
ENV SHARELATEX_CONFIG /etc/sharelatex/settings.coffee
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
38
server-ce/Gruntfile.coffee
Normal file
38
server-ce/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']
|
|
@ -1,4 +1,4 @@
|
||||||
ShareLaTeX Docker Image
|
ShareLaTeX Community Docker Image
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
**Please read this entire file before installing ShareLaTeX via Docker. It's only
|
**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
|
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
|
### 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).
|
[Redis](http://redis.io/) (must be version 2.6.12 or later).
|
||||||
These should be running on the host system.
|
These should be running on the host system.
|
||||||
|
|
||||||
|
@ -142,7 +145,7 @@ the package name.
|
||||||
|
|
||||||
### Configuration Options
|
### 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 \
|
$ docker run -d \
|
||||||
|
@ -167,6 +170,8 @@ configured correctly!
|
||||||
* `SHARELATEX_SECURE_COOKIE`: Set this to something non-zero to use a secure cookie.
|
* `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.
|
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
|
### Creating and Managing users
|
||||||
|
|
||||||
Uun the following command to create your first user and make them an admin:
|
Uun the following command to create your first user and make them an admin:
|
||||||
|
|
22
server-ce/git-revision.js
Normal file
22
server-ce/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;
|
set $static_path /var/www/sharelatex/web/public;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_pass http://localhost:3000;
|
proxy_pass http://127.0.0.1:3000;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "upgrade";
|
||||||
|
@ -17,7 +17,7 @@ server {
|
||||||
}
|
}
|
||||||
|
|
||||||
location /socket.io {
|
location /socket.io {
|
||||||
proxy_pass http://localhost:3026;
|
proxy_pass http://127.0.0.1:3026;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "upgrade";
|
||||||
|
|
11
server-ce/package.json
Normal file
11
server-ce/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
server-ce/services.js
Normal file
43
server-ce/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