diff --git a/server-ce/README.md b/server-ce/README.md index 8e5cd84b8e..53a770d328 100644 --- a/server-ce/README.md +++ b/server-ce/README.md @@ -1,2 +1,47 @@ -## Install -Please see the [offical wiki for install guides](https://github.com/sharelatex/sharelatex/wiki/Production-Installation-Instructions) \ No newline at end of file +# ShareLaTeX Docker Image + +This is the source for building the sharelatex community-edition docker image. + + +## End-User Install +Please see the [offical wiki for install +guides](https://github.com/sharelatex/sharelatex/wiki/Production-Installation-Instructions) + + +## Development + +This repo contains two dockerfiles, `Dockerfile-base`, which builds the +`sharelatex/sharelatex-base` image, and `Dockerfile` which builds the +`sharelatex/sharelatex` (or "community") image. + +The Base image generally contains the basic dependencies like `wget` and +`aspell`, plus `texlive`. We split this out because it's a pretty heavy set of +dependencies, and it's nice to not have to rebuild all of that every time. + +The Sharelatex image extends the base image and adds the actual sharelatex code +and services. + +Use `make build-base` and `make build-community` to build these images. + + +### How the Sharelatex code gets here + +This repo uses [the public Sharelatex +repository](https://github.com/sharelatex/sharelatex), which used to be the main +public source for the sharelatex system. + +That repo is cloned down into the docker image, and a script then installs all +the services. This way of doing things predates the new dev-env, and isn't +currently tested. + + +### How services run inside the container + +We use the [Phusion base-image](https://github.com/phusion/baseimage-docker) +(which is extended by our `base` image) to provide us with a VM-like container +in which to run the sharelatex services. Baseimage uses the `runit` service +manager to manage services, and we add our init-scripts from the `./runit` +folder. + +Overall, this is very like how the services would run in production, it just +happens to be all inside one docker container instead of being on one VM.