Просмотр исходного кода

Merge pull request #94 from overleaf/csh-issue-3680-template-config

Generate a config file from env vars and template
Christopher Hoskin 5 лет назад
Родитель
Сommit
753155db97

+ 3 - 0
services/git-bridge/.dockerignore

@@ -1,6 +1,9 @@
 *
 *
+!start.sh
+!/conf
 !/lib
 !/lib
 !/src/main
 !/src/main
 !/pom.xml
 !/pom.xml
 !/Makefile
 !/Makefile
 !/LICENSE
 !/LICENSE
+!/vendor

+ 3 - 0
services/git-bridge/.gitignore

@@ -48,3 +48,6 @@ com_crashlytics_export_strings.xml
 crashlytics.properties
 crashlytics.properties
 crashlytics-build.properties
 crashlytics-build.properties
 fabric.properties
 fabric.properties
+
+# Local configuration files
+conf/runtime.json

+ 17 - 5
services/git-bridge/Dockerfile

@@ -2,16 +2,20 @@
 
 
 FROM maven:3-jdk-8 as base
 FROM maven:3-jdk-8 as base
 
 
-RUN apt-get update && apt-get install -y make \
+RUN apt-get update && apt-get install -y make git \
  && rm -rf /var/lib/apt/lists
  && rm -rf /var/lib/apt/lists
 
 
+COPY vendor/envsubst /opt/envsubst
+RUN chmod +x /opt/envsubst
+
 RUN useradd --create-home node
 RUN useradd --create-home node
 
 
 FROM base as builder
 FROM base as builder
 
 
+COPY . /app
+
 WORKDIR /app
 WORKDIR /app
 
 
-COPY . /app
 RUN make package \
 RUN make package \
 # The name of the created jar contains the current version tag.
 # The name of the created jar contains the current version tag.
 # Rename it to a static path that can be used for copying.
 # Rename it to a static path that can be used for copying.
@@ -26,9 +30,17 @@ RUN apt-get update && apt-get install -y git \
 
 
 RUN useradd --create-home node
 RUN useradd --create-home node
 
 
-ENTRYPOINT ["java", "-jar", "/git-bridge.jar"]
-CMD ["/conf/runtime.json"]
-
 COPY --from=builder /git-bridge.jar /
 COPY --from=builder /git-bridge.jar /
 
 
+COPY vendor/envsubst /opt/envsubst
+RUN chmod +x /opt/envsubst
+
+COPY conf/envsubst_template.json envsubst_template.json
+COPY start.sh start.sh
+
+RUN mkdir conf
+RUN chown node:node conf
+
 USER node
 USER node
+
+CMD ["/start.sh"]

+ 9 - 3
services/git-bridge/Makefile

@@ -2,8 +2,14 @@
 
 
 MVN_OPTS := "--no-transfer-progress"
 MVN_OPTS := "--no-transfer-progress"
 
 
-run: package
-	java -jar target/writelatex-git-bridge-1.0-SNAPSHOT-jar-with-dependencies.jar conf/local.json
+runtime-conf:
+	/opt/envsubst < conf/envsubst_template.json > conf/runtime.json
+
+
+run: package runtime-conf
+	java -jar \
+	target/writelatex-git-bridge-1.0-SNAPSHOT-jar-with-dependencies.jar \
+	conf/runtime.json
 
 
 
 
 build:
 build:
@@ -22,4 +28,4 @@ package: clean
 	mvn $(MVN_OPTS) package -DskipTests
 	mvn $(MVN_OPTS) package -DskipTests
 
 
 
 
-.PHONY: run package build clean test
+.PHONY: run package build clean test runtime-conf

+ 32 - 0
services/git-bridge/conf/envsubst_template.json

@@ -0,0 +1,32 @@
+{
+  "port": ${GIT_BRIDGE_PORT:-8000},
+    "rootGitDirectory": "${GIT_BRIDGE_ROOT_DIR:-/tmp/wlgb}",
+    "apiBaseUrl": "${GIT_BRIDGE_API_BASE_URL:-https://localhost/api/v0}",
+    "username": "${GIT_BRIDGE_USERNAME}",
+    "password": "${GIT_BRIDGE_PASSWORD}",
+    "postbackBaseUrl": "${GIT_BRIDGE_POSTBACK_BASE_URL:-https://localhost}",
+    "serviceName": "${GIT_BRIDGE_SERVICE_NAME:-Overleaf}",
+    "oauth2": {
+      "oauth2ClientID": "${GIT_BRIDGE_OAUTH2_CLIENT_ID}",
+      "oauth2ClientSecret": "${GIT_BRIDGE_OAUTH2_CLIENT_SECRET}",
+      "oauth2Server": "${GIT_BRIDGE_OAUTH2_SERVER:-https://localhost}"
+    },
+    "repoStore": {
+      "maxFileNum": ${GIT_BRIDGE_REPOSTORE_MAX_FILE_NUM:-2000},
+      "maxFileSize": ${GIT_BRIDGE_REPOSTORE_MAX_FILE_SIZE:-52428800}
+    },
+    "swapStore": {
+      "type": "${GIT_BRIDGE_SWAPSTORE_TYPE:-noop}",
+      "awsAccessKey": "${GIT_BRIDGE_SWAPSTORE_AWS_ACCESS_KEY}",
+      "awsSecret": "${GIT_BRIDGE_SWAPSTORE_AWS_ACCESS_KEY}",
+      "s3BucketName": "${GIT_BRIDGE_SWAPSTORE_S3_BUCKET_NAME}",
+      "awsRegion": "${GIT_BRIDGE_SWAPSTORE_AWS_REGION:-us-east-1}"
+    },
+    "swapJob": {
+      "minProjects": ${GIT_BRIDGE_SWAPJOB_MIN_PROJECTS:-50},
+      "lowGiB": ${GIT_BRIDGE_SWAPJOB_LOW_GIB:-128},
+      "highGiB": ${GIT_BRIDGE_SWAPJOB_HIGH_GIB:-256},
+      "intervalMillis": ${GIT_BRIDGE_SWAPJOB_INTERVAL_MILLIS:-3600000},
+      "compressionMethod": "${GIT_BRIDGE_SWAPJOB_COMPRESSION_METHOD:-gzip}"
+    }
+}

+ 3 - 0
services/git-bridge/start.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+/opt/envsubst < /envsubst_template.json > /conf/runtime.json
+exec java -jar /git-bridge.jar /conf/runtime.json

BIN
services/git-bridge/vendor/envsubst