Ctrl K
ComunidadGuías…

Dockerfile.bskylink

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
FROM node:24.22-alpine3.23 AS build

# Move files into the image and install
WORKDIR /app

RUN corepack enable

COPY ./bskylink/package.json ./
COPY ./bskylink/pnpm-lock.yaml ./bskylink/pnpm-workspace.yaml ./
RUN pnpm install --frozen-lockfile

COPY ./bskylink/tsconfig.json ./
COPY ./bskylink/src ./src
COPY ./bskylink/locales ./locales

# build then prune dev deps
RUN pnpm build
RUN pnpm install --prod --frozen-lockfile --ignore-scripts --prefer-offline

# Uses assets from build stage to reduce build size
FROM node:24.22-alpine3.23

RUN apk add --update dumb-init

# Avoid zombie processes, handle signal forwarding
ENTRYPOINT ["dumb-init", "--"]

WORKDIR /app
COPY --from=build /app /app
RUN mkdir /app/data && chown node /app/data

VOLUME /app/data
EXPOSE 3000 9090
ENV LINK_PORT=3000
ENV LINK_METRICS_PORT=9090
ENV NODE_ENV=production
ENV NODE_OPTIONS="--import=@atproto-labs/fetch-node/emudhra-preload"

# https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user
USER node
CMD ["node", "--heapsnapshot-signal=SIGUSR2", "--enable-source-maps", "dist/bin.js"]

LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="Bsky Link Service"
LABEL org.opencontainers.image.licenses=UNLICENSED