FROM node:22-bookworm-slim AS base FROM base AS builder ARG APP_DIR=/opt/bridge-signal ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN mkdir -p ${APP_DIR}/ RUN corepack enable && corepack prepare pnpm@9.15.4 --activate RUN pnpm add -g turbo WORKDIR ${APP_DIR} COPY . . RUN turbo prune --scope=@link-stack/bridge-signal --docker FROM base AS installer ARG APP_DIR=/opt/bridge-signal ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" WORKDIR ${APP_DIR} RUN corepack enable && corepack prepare pnpm@9.15.4 --activate COPY --from=builder ${APP_DIR}/out/json/ . COPY --from=builder ${APP_DIR}/out/full/ . COPY --from=builder ${APP_DIR}/out/pnpm-lock.yaml ./pnpm-lock.yaml RUN pnpm install --frozen-lockfile RUN pnpm add -g turbo RUN turbo run build --filter=@link-stack/bridge-signal FROM base as runner ARG BUILD_DATE ARG VERSION ARG APP_DIR=/opt/bridge-signal ARG SIGNAL_CLI_VERSION=0.13.12 ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN mkdir -p ${APP_DIR}/ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ apt-get install -y --no-install-recommends \ dumb-init curl && \ ARCH=$(dpkg --print-architecture) && \ curl -L "https://github.com/AsamK/signal-cli/releases/download/v${SIGNAL_CLI_VERSION}/signal-cli-native-linux-${ARCH}-${SIGNAL_CLI_VERSION}.tar.gz" \ | tar xz -C /opt && \ ln -s /opt/signal-cli-native-linux-*/bin/signal-cli-native /usr/local/bin/signal-cli && \ apt-get remove -y curl && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* RUN corepack enable && corepack prepare pnpm@9.15.4 --activate WORKDIR ${APP_DIR} COPY --from=installer ${APP_DIR} ./ RUN chown -R node:node ${APP_DIR} WORKDIR ${APP_DIR}/apps/bridge-signal/ RUN chmod +x docker-entrypoint.sh USER node RUN mkdir /home/node/signal-data EXPOSE 5002 ENV PORT 5002 ENV NODE_ENV production ENV SIGNAL_DATA_DIR /home/node/signal-data ENV COREPACK_ENABLE_NETWORK=0 ENTRYPOINT ["/opt/bridge-signal/apps/bridge-signal/docker-entrypoint.sh"]