diff --git a/.gitignore b/.gitignore index edcda84f24..8c5a87b978 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,6 @@ -/config -config-local +# docker image build +.dockerignore -node_modules/ -api-data -versions/ - -web -document-updater -clsi -filestore -track-changes -docstore -chat -spelling -real-time -migrations/*.js - -data -tmp - -db.sqlite - -.DS_Store -.vagrant +# user defined files +.env +docker-compose.override.yml diff --git a/server-ce/.dockerignore b/server-ce/.dockerignore index 2a5c59398a..82041ec55a 100644 --- a/server-ce/.dockerignore +++ b/server-ce/.dockerignore @@ -1,3 +1,4 @@ .DS_Store .git/ -node_modules/ +libraries/ +services/git-bridge diff --git a/server-ce/Dockerfile b/server-ce/Dockerfile index c5ce81ef24..29d32887e7 100644 --- a/server-ce/Dockerfile +++ b/server-ce/Dockerfile @@ -9,20 +9,14 @@ WORKDIR /var/www/sharelatex # Add required source files # ------------------------- -ADD ${baseDir}/genScript.js /var/www/sharelatex/genScript.js -ADD ${baseDir}/services.js /var/www/sharelatex/services.js +ADD server-ce/genScript.js /var/www/sharelatex/genScript.js +ADD server-ce/services.js /var/www/sharelatex/services.js +ADD services/ /var/www/sharelatex/ -# Checkout services -# ----------------- -RUN node genScript checkout | bash \ - \ -# Store the revision for each service -# --------------------------------------------- -&& node genScript revisions | bash > /var/www/revisions.txt \ - \ -# Cleanup the git history -# ------------------- -&& node genScript cleanup-git | bash +# Store the revision +# ------------------ +ARG MONOREPO_REVISION +RUN echo "monorepo-server-ce,$MONOREPO_REVISION" > /var/www/revisions.txt # Install npm dependencies # ------------------------ @@ -39,32 +33,32 @@ RUN ln -s /var/www/sharelatex/clsi/bin/synctex /opt/synctex # Copy runit service startup scripts to its location # -------------------------------------------------- -ADD ${baseDir}/runit /etc/service +ADD server-ce/runit /etc/service # Configure nginx # --------------- -ADD ${baseDir}/nginx/nginx.conf.template /etc/nginx/templates/nginx.conf.template -ADD ${baseDir}/nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf +ADD server-ce/nginx/nginx.conf.template /etc/nginx/templates/nginx.conf.template +ADD server-ce/nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf # Configure log rotation # ---------------------- -ADD ${baseDir}/logrotate/sharelatex /etc/logrotate.d/sharelatex +ADD server-ce/logrotate/sharelatex /etc/logrotate.d/sharelatex RUN chmod 644 /etc/logrotate.d/sharelatex # Copy Phusion Image startup scripts to its location # -------------------------------------------------- -COPY ${baseDir}/init_scripts/ /etc/my_init.d/ +COPY server-ce/init_scripts/ /etc/my_init.d/ # Copy app settings files # ----------------------- -COPY ${baseDir}/settings.js /etc/sharelatex/settings.js +COPY server-ce/settings.js /etc/sharelatex/settings.js # Copy grunt thin wrapper # ----------------------- -ADD ${baseDir}/bin/grunt /usr/local/bin/grunt +ADD server-ce/bin/grunt /usr/local/bin/grunt RUN chmod +x /usr/local/bin/grunt # Set Environment Variables diff --git a/server-ce/Dockerfile-base b/server-ce/Dockerfile-base index 0878d4a8e1..30164153f9 100644 --- a/server-ce/Dockerfile-base +++ b/server-ce/Dockerfile-base @@ -4,9 +4,6 @@ FROM phusion/baseimage:0.11 -ENV baseDir . - - # Makes sure LuaTex cache is writable # ----------------------------------- ENV TEXMFVAR=/var/lib/sharelatex/tmp/texmf-var @@ -32,7 +29,7 @@ RUN apt-get update \ # Add envsubst # ------------ -ADD ./vendor/envsubst /usr/bin/envsubst +ADD server-ce/vendor/envsubst /usr/bin/envsubst RUN chmod +x /usr/bin/envsubst # Install TexLive diff --git a/server-ce/Makefile b/server-ce/Makefile index 4896799f31..941ace9cc4 100644 --- a/server-ce/Makefile +++ b/server-ce/Makefile @@ -1,16 +1,20 @@ # Makefile -SHARELATEX_BASE_TAG := sharelatex/sharelatex-base -SHARELATEX_TAG := sharelatex/sharelatex -SHARELATEX_BASE_CACHE := $(shell echo $(SHARELATEX_BASE_TAG) | sed -E 's/(.+):.+/\1:latest/') +export SHARELATEX_BASE_TAG := sharelatex/sharelatex-base +export SHARELATEX_TAG := sharelatex/sharelatex +export SHARELATEX_BASE_CACHE := $(shell echo $(SHARELATEX_BASE_TAG) | sed -E 's/(.+):.+/\1:latest/') +export MONOREPO_REVISION := $(shell git rev-parse HEAD) +MONOREPO_ROOT := ../ build-base: - docker pull $(SHARELATEX_BASE_CACHE) - docker build -f Dockerfile-base --pull --cache-from $(SHARELATEX_BASE_CACHE) -t $(SHARELATEX_BASE_TAG) . + cp .dockerignore $(MONOREPO_ROOT) + docker pull $(SHARELATEX_BASE_CACHE) || echo "nothing cached yet" + docker build -f Dockerfile-base --pull --cache-from $(SHARELATEX_BASE_CACHE) -t $(SHARELATEX_BASE_TAG) $(MONOREPO_ROOT) build-community: - docker build --build-arg SHARELATEX_BASE_TAG=$(SHARELATEX_BASE_TAG) -f Dockerfile -t $(SHARELATEX_TAG) . + cp .dockerignore $(MONOREPO_ROOT) + docker build --build-arg SHARELATEX_BASE_TAG --build-arg MONOREPO_REVISION -f Dockerfile -t $(SHARELATEX_TAG) $(MONOREPO_ROOT) PHONY: build-base build-community