ARG GOLANG_TAG=golang:1.22.4 ARG NODE_JS_TAG=node:18.15.0-alpine3.16 # To run locally, use #ARG GOLANG_TAG=registry.cmd.navi-tech.in/common/golang:1.19 FROM ${GOLANG_TAG} AS builder RUN mkdir -p /build WORKDIR /build COPY . /build RUN /bin/bash -c "make build-migrations" RUN /bin/bash -c "make build-log-enricher" FROM rust:slim AS symbolicator-builder SHELL ["/bin/bash", "-uo", "pipefail", "-c"] # Update this version when a new version of element is released ENV ELEMENT_VERSION 1.11.80 RUN mkdir /src WORKDIR /src COPY . . RUN cd cybertron-symbolicator \ && cargo build --release --locked \ && mv "target/release/source-map" . \ && strip source-map FROM ${NODE_JS_TAG} AS node-cache-builder RUN mkdir /cache WORKDIR /cache COPY cybertron-symbolicator-react-native/package.json /cache COPY cybertron-symbolicator-react-native/yarn.lock /cache RUN npm install FROM node:20-bookworm RUN mkdir -p /usr/local WORKDIR /usr/local COPY --from=builder /build/out/log-enricher /usr/local/ COPY --from=builder /build/out/migrations /usr/local/migrations COPY --from=builder /build/db/migrations/*.sql /usr/local/db/migrations/ COPY --from=builder /build/configs/application.yml /usr/local/configs/ RUN mkdir -p /usr/local/bins/cybertron-symbolicator-react-native COPY --from=builder /build/cybertron-symbolicator-react-native /usr/local/bins/cybertron-symbolicator-react-native COPY --from=node-cache-builder /cache/ /usr/local/bins/cybertron-symbolicator-react-native/ COPY --from=symbolicator-builder /src/cybertron-symbolicator/source-map /usr/local/bins/ RUN adduser --system --uid 4000 --disabled-password api-user && chown -R 4000:4000 /usr/local && chmod -R g+w /usr/local/ USER 4000 CMD /bin/bash -c "./log-enricher"