From 2ebae690448418f6a630fca32259fdae9e63c949 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Wed, 17 Apr 2019 13:45:21 +0200 Subject: [PATCH 1/5] [docker] build the git-bridge in docker Signed-off-by: Jakob Ackermann --- services/git-bridge/.dockerignore | 4 ++++ services/git-bridge/Dockerfile | 19 ++++++++++++++++++- services/git-bridge/README.md | 31 +++++++++++++++++++++---------- 3 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 services/git-bridge/.dockerignore diff --git a/services/git-bridge/.dockerignore b/services/git-bridge/.dockerignore new file mode 100644 index 0000000000..50497becb8 --- /dev/null +++ b/services/git-bridge/.dockerignore @@ -0,0 +1,4 @@ +* +!/lib +!/src/main +!/pom.xml diff --git a/services/git-bridge/Dockerfile b/services/git-bridge/Dockerfile index a8b16e79f2..aa9da99b67 100644 --- a/services/git-bridge/Dockerfile +++ b/services/git-bridge/Dockerfile @@ -13,4 +13,21 @@ RUN apt-get update && \ RUN mkdir /app -WORKDIR /app \ No newline at end of file +WORKDIR /app + +COPY . /app +RUN mvn clean package \ +# The name of the created jar contains the current version tag. +# Rename it to a static path that can be used for copying. +&& find /app/target \ + -name 'writelatex-git-bridge*jar-with-dependencies.jar' \ + -exec mv {} /git-bridge.jar \; + +FROM openjdk:8-jre + +USER www-data + +ENTRYPOINT ["java", "-jar", "/git-bridge.jar"] +CMD ["/conf/runtime.json"] + +COPY --from=0 /git-bridge.jar / diff --git a/services/git-bridge/README.md b/services/git-bridge/README.md index 1b01ddc49e..acfc748b27 100644 --- a/services/git-bridge/README.md +++ b/services/git-bridge/README.md @@ -1,13 +1,26 @@ -writelatex-git-bridge -===================== +# writelatex-git-bridge + +## Docker + +The `Dockerfile` contains all the requirements for building and running the + writelatex-git-bridge. + +```bash +# build the image +docker build -t writelatex-git-bridge . + +# run it with the demo config +docker run -v `pwd`/conf/local.json:/conf/runtime.json writelatex-git-bridge +``` + +## Native install + +### Required packages -Required --------- * `maven` (for building, running tests and packaging) * `jdk-8` (for compiling and running) -Commands --------- +### Commands To be run from the base directory: @@ -20,8 +33,7 @@ To be run from the base directory: **Clean**: `mvn clean` -Installation ------------- +### Installation Install dependencies: @@ -39,8 +51,7 @@ Run `mvn package` to build, test, and package it into a jar at `target/writelate Use `java -jar ` to run the server. -Runtime Configuration ---------------------- +## Runtime Configuration The configuration file is in `.json` format. From a517c1505332040aac2a33e87898983029c8921d Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Wed, 17 Apr 2019 23:10:08 +0200 Subject: [PATCH 2/5] [docker] include the LICENSE file in the image Signed-off-by: Jakob Ackermann --- services/git-bridge/.dockerignore | 1 + 1 file changed, 1 insertion(+) diff --git a/services/git-bridge/.dockerignore b/services/git-bridge/.dockerignore index 50497becb8..1314e8beb5 100644 --- a/services/git-bridge/.dockerignore +++ b/services/git-bridge/.dockerignore @@ -2,3 +2,4 @@ !/lib !/src/main !/pom.xml +!/LICENSE From 35ac848f438f41fa14044731985182f4ad1d1a0a Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Fri, 26 Apr 2019 20:07:58 +0200 Subject: [PATCH 3/5] [docker] install git in the app image Signed-off-by: Jakob Ackermann --- services/git-bridge/Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/git-bridge/Dockerfile b/services/git-bridge/Dockerfile index aa9da99b67..b90b7d3fbc 100644 --- a/services/git-bridge/Dockerfile +++ b/services/git-bridge/Dockerfile @@ -25,6 +25,12 @@ RUN mvn clean package \ FROM openjdk:8-jre +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + git \ + && rm -rf \ + /var/lib/apt/lists/* + USER www-data ENTRYPOINT ["java", "-jar", "/git-bridge.jar"] From f547b6d494f5e0a73faff5f59ee3bfd24c57a9c0 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Sun, 5 May 2019 18:34:01 +0200 Subject: [PATCH 4/5] Revert "Add git, make, and curl to docker image" This reverts commit 02a2c9cd429b26ff44fabb97d3649e791b9edea4 Signed-off-by: Jakob Ackermann --- services/git-bridge/Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/git-bridge/Dockerfile b/services/git-bridge/Dockerfile index 6d9afd4842..0ac29b4e32 100644 --- a/services/git-bridge/Dockerfile +++ b/services/git-bridge/Dockerfile @@ -2,8 +2,6 @@ FROM maven:3-jdk-8 -RUN apt-get update && apt-get install -y make git curl - WORKDIR /app COPY . /app From 4644faf21232bb64fd8edf5c594640c5b21f449e Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Thu, 10 Dec 2020 14:51:05 +0000 Subject: [PATCH 5/5] [misc] integrate git-bridge with overleaf dev-env and prod setup - Add `base` target for dev-env - Add `node` user for dev-env and prod - Use `make` all the way --- services/git-bridge/.dockerignore | 1 + services/git-bridge/Dockerfile | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/services/git-bridge/.dockerignore b/services/git-bridge/.dockerignore index 1314e8beb5..e49947d0fd 100644 --- a/services/git-bridge/.dockerignore +++ b/services/git-bridge/.dockerignore @@ -2,4 +2,5 @@ !/lib !/src/main !/pom.xml +!/Makefile !/LICENSE diff --git a/services/git-bridge/Dockerfile b/services/git-bridge/Dockerfile index 0ac29b4e32..341535c451 100644 --- a/services/git-bridge/Dockerfile +++ b/services/git-bridge/Dockerfile @@ -1,11 +1,18 @@ # Dockerfile for git-bridge -FROM maven:3-jdk-8 +FROM maven:3-jdk-8 as base + +RUN apt-get update && apt-get install -y make \ + && rm -rf /var/lib/apt/lists + +RUN useradd --create-home node + +FROM base as builder WORKDIR /app COPY . /app -RUN mvn clean package \ +RUN make package \ # The name of the created jar contains the current version tag. # Rename it to a static path that can be used for copying. && find /app/target \ @@ -14,15 +21,14 @@ RUN mvn clean package \ FROM openjdk:8-jre -RUN apt-get update \ - && apt-get install --no-install-recommends -y \ - git \ - && rm -rf \ - /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y git \ + && rm -rf /var/lib/apt/lists -USER www-data +RUN useradd --create-home node ENTRYPOINT ["java", "-jar", "/git-bridge.jar"] CMD ["/conf/runtime.json"] -COPY --from=0 /git-bridge.jar / +COPY --from=builder /git-bridge.jar / + +USER node