Dockerfile
Rama main · réplica de lectura del repositorio original.
# ---- 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"]