Dockerfile 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # syntax=docker.io/docker/dockerfile:1.3@sha256:42399d4635eddd7a9b8a24be879d2f9a930d0ed040a61324cfdf59ef1357b3b2
  2. FROM node:22.16-bullseye-slim@sha256:550b434f7edc3a1875860657a3e306752358029c957280809ae6395ab296faeb
  3. # npm wants to clone random Git repositories - lovely.
  4. # RUN apk add git python make build-base
  5. # RUN apk update && apk add bash
  6. RUN apt-get update && apt-get -y install \
  7. git python make curl netcat
  8. RUN npm i typescript -g
  9. USER 1000
  10. RUN mkdir -p /home/node/app
  11. RUN mkdir -p /home/node/.npm
  12. WORKDIR /home/node/app
  13. # Fix git ssh error
  14. RUN git config --global url."https://".insteadOf ssh://
  15. COPY --chown=node:node ./relayer/ethereum/ts-scripts/relayer/config/ ./ethereum/ts-scripts/relayer/config/
  16. #Path matters so as to not break imports
  17. WORKDIR /home/node/app/relayer/generic_relayer/relayer-engine-v2/
  18. # Only invalidate the npm install step if package.json changed
  19. COPY --chown=node:node /relayer/generic_relayer/relayer-engine-v2/package.json .
  20. COPY --chown=node:node /relayer/generic_relayer/relayer-engine-v2/package-lock.json .
  21. # We want to cache node_modules *and* incorporate it into the final image.
  22. RUN --mount=type=cache,uid=1000,gid=1000,target=/home/node/.npm \
  23. --mount=type=cache,uid=1000,gid=1000,target=/relayer/generic_relayer/relayer-engine-v2/node_modules \
  24. npm ci && \
  25. cp -R node_modules node_modules_cache
  26. # Amusingly, Debian's coreutils version has a bug where mv believes that
  27. # the target is on a different fs and does a full recursive copy for what
  28. # could be a renameat syscall. Alpine does not have this bug.
  29. RUN rm -rf node_modules && mv node_modules_cache node_modules
  30. ARG dev
  31. ENV DEV=$dev
  32. COPY --chown=node:node /relayer/generic_relayer/relayer-engine-v2/ .