Dockerfile 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # Dockerfile for git-bridge
  2. FROM maven:3-jdk-11 as base
  3. RUN apt-get update && apt-get install -y make git sqlite3 build-essential dpkg-dev
  4. RUN echo "deb-src http://deb.debian.org/debian buster main" >> /etc/apt/sources.list && \
  5. echo "deb-src http://deb.debian.org/debian buster-updates main" >> /etc/apt/sources.list && \
  6. echo "deb-src http://security.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list
  7. RUN mkdir -p /build
  8. WORKDIR /build
  9. RUN apt-get update && \
  10. apt-get -y source libjemalloc-dev && \
  11. apt-get -y build-dep libjemalloc-dev && \
  12. echo "override_dh_auto_configure:" >> jemalloc-5.1.0/debian/rules && \
  13. echo "\tdh_auto_configure -- --enable-debug --enable-fill --enable-prof --enable-stat" >> jemalloc-5.1.0/debian/rules && \
  14. cat jemalloc-5.1.0/debian/rules
  15. WORKDIR /build/jemalloc-5.1.0
  16. RUN dpkg-buildpackage
  17. ADD install-all-dev-packages.sh /install-all-dev-packages.sh
  18. RUN rm -rf /var/lib/apt/lists
  19. COPY vendor/envsubst /opt/envsubst
  20. RUN chmod +x /opt/envsubst
  21. RUN useradd --create-home node
  22. FROM base as builder
  23. COPY . /app
  24. WORKDIR /app
  25. RUN make package \
  26. # The name of the created jar contains the current version tag.
  27. # Rename it to a static path that can be used for copying.
  28. && find /app/target \
  29. -name 'writelatex-git-bridge*jar-with-dependencies.jar' \
  30. -exec mv {} /git-bridge.jar \;
  31. FROM builder
  32. # FROM openjdk:11-jre <-- disabled while we are memory profiling
  33. WORKDIR /
  34. RUN apt-get update && apt-get install -y git sqlite3 procps htop net-tools sockstat binutils graphviz \
  35. && rm -rf /var/lib/apt/lists
  36. # Install Google Cloud Profiler agent
  37. RUN mkdir -p /opt/cprof && \
  38. wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \
  39. | tar xzv -C /opt/cprof
  40. # Install Google Cloud Debugger agent
  41. RUN mkdir /opt/cdbg && \
  42. wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
  43. tar xvz -C /opt/cdbg
  44. # Disabled while we are memory profiling (these are already in the image)
  45. # RUN useradd --create-home node
  46. # COPY --from=builder /git-bridge.jar /
  47. # COPY --from=builder /build/*.deb /tmp/
  48. # RUN dpkg -i /tmp/libjemalloc*.deb
  49. RUN dpkg -i /build/*.deb
  50. RUN apt-get -y update && /install-all-dev-packages.sh && rm -rf /var/lib/apt/lists
  51. COPY vendor/envsubst /opt/envsubst
  52. RUN chmod +x /opt/envsubst
  53. COPY conf/envsubst_template.json envsubst_template.json
  54. COPY start.sh start.sh
  55. RUN mkdir conf
  56. RUN chown node:node conf
  57. USER node
  58. CMD ["/start.sh"]