Ctrl K
ComunidadGuías…

Dockerfile

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

Archivo original ↗Preguntar a KiBot
# ---- Stage 1: builder ----
# Native modulları (better-sqlite3, node-pty) build toolchain ilə qurur.
# Toolchain yalnız bu mərhələdə qalır — final image-ə daşınmır.
FROM node:22-alpine AS builder

WORKDIR /app

# Native build üçün lazımi alətlər (yalnız builder mərhələsində)
RUN apk add --no-cache python3 make g++ gcc linux-headers

# Lock-fayl ilə reproduktiv install (npm ci) — optional dependency-lər (node-pty) də daxil
COPY package.json package-lock.json ./
RUN npm ci --omit=dev

# ---- Stage 2: runtime ----
# Yalnız runtime — build toolchain yox, image kiçik qalır.
FROM node:22-alpine

WORKDIR /app

# Host Docker / Compose idarəsi üçün docker CLI (build toolchain DEYİL).
# openssh-client: uzaq SSH host-da compose/stack əməlləri üçün (DOCKER_HOST=ssh:// connhelper ssh-ə bağlıdır).
# git: "Deploy from Git" — repo clone/pull (#2-B).
RUN apk add --no-cache docker-cli docker-cli-compose openssh-client git

# Hazır qurulmuş node_modules-i builder-dən köçür (eyni node:22-alpine → ABI uyğun)
COPY --from=builder /app/node_modules ./node_modules

# Tətbiq kodu (.dockerignore node_modules-i istisna edir → köçürülən qalır)
COPY . .

# Data qovluğu (settings, tags, history, ssh-keys)
RUN mkdir -p /app/data

EXPOSE 7077

ENV NODE_ENV=production
ENV PORT=7077

CMD ["npm", "start"]