FROM node:22-bookworm-slim #Use an entrypoint that simply lists out all commands sent to it COPY entryPoint.sh /src/fab/entryPoint.sh ENTRYPOINT ["/src/fab/entryPoint.sh"] #node:18 image already has a user node with uid:gid 1000:1000 #We add it to sudo list RUN export DEBIAN_FRONTEND="noninteractive" \ && apt-get update \ && apt-get install -y \ # sudo \ less \ #Neededd for git commits during builds # git \ #Needed for triggering next step of builds # curl \ && rm -rf /var/lib/apt/lists/* \ # && usermod -aG sudo node \ # && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \ #Creating a few base folders that child dockers may need && mkdir -p /src && chown node /src \ && mkdir -p /cloud && chown node /cloud \ && mkdir -p /build && chown node /build \ # && npm install -g npm@10.8.2 \ && npm install -g pnpm USER node # upgrade pnpm to latest version #&& source ~/.bashrc \ #doesn't work #Also, "pnpm add -g pnpm" needs be in "~" to work - it doesn't work from "/" dir (not sure why). RUN SHELL=bash pnpm setup \ && export PNPM_HOME="~/.local/share/pnpm" && export PATH="$PNPM_HOME:$PATH" \ && cd ~ && pnpm add -g pnpm RUN echo '\nalias p="pnpm"' >> ~/.bashrc WORKDIR /src #Allow image to be used standalone without any commands: CMD ["tail", "-f", "/dev/null"] #CMD ["sleep", "inf"]