Files
overleaf-cep/services/git-bridge/Dockerfile
T
Miguel Serrano dedc521295 [git-bridge] Cache maven artifacts in Dockerfile (#34390)
* [git-bridge] Cache maven artifacts in Dockerfile

GitOrigin-RevId: 1222ba62bc6242874d76e26c69b366fbde62f519
2026-06-09 08:06:18 +00:00

66 lines
1.7 KiB
Docker

# Build the a8m/envsubst binary, as it supports default values,
# which the gnu envsubst (from gettext-base) does not.
FROM golang:1.25.5-alpine AS envsubst_builder
WORKDIR /build
RUN go install github.com/a8m/envsubst/cmd/envsubst@latest
FROM maven:3-amazoncorretto-21-debian AS base
RUN apt-get update && apt-get install -y make git sqlite3 curl \
&& rm -rf /var/lib/apt/lists
COPY --from=envsubst_builder /go/bin/envsubst /opt/envsubst
RUN chmod +x /opt/envsubst
RUN useradd --create-home node
ENV MAVEN_OPTS="-Dmaven.repo.local=/app/.m2/repository"
# pre-resolve Maven dependencies and plugins into the base image to limit
# downstream `mvn` invocations hitting Maven Central on every CI build.
COPY pom.xml /tmp/pom.xml
RUN mvn -B --no-transfer-progress -f /tmp/pom.xml \
dependency:go-offline \
dependency:resolve-plugins \
&& chown -R node:node /app/.m2 \
&& rm /tmp/pom.xml
FROM base AS builder
COPY . /app
WORKDIR /app
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 \
-name 'writelatex-git-bridge*jar-with-dependencies.jar' \
-exec mv {} /git-bridge.jar \;
FROM amazoncorretto:21-alpine
RUN apk add --update --no-cache bash git sqlite procps htop net-tools jemalloc util-linux
ENV LD_PRELOAD=/usr/lib/libjemalloc.so.2
RUN adduser -D node
COPY --from=builder /git-bridge.jar /
COPY --from=envsubst_builder /go/bin/envsubst /opt/envsubst
RUN chmod +x /opt/envsubst
COPY conf/envsubst_template.json envsubst_template.json
COPY start.sh start.sh
COPY server-pro-start.sh server-pro-start.sh
RUN mkdir conf
RUN chown node:node conf
USER node
CMD ["/start.sh"]