FROM node:20-alpine WORKDIR /app # Install dependencies first (layer cache) COPY package.json package-lock.json* ./ RUN npm ci --omit=dev # Copy source COPY src/ ./src/ # Data directory for persistent files (mounted as a volume) RUN mkdir -p /data EXPOSE 3001 ENV NODE_ENV=production \ PORT=3001 \ DB_PATH=/data/dns-cache.json \ SETTINGS_PATH=/data/settings.json \ USERS_PATH=/data/users.json \ AUDIT_PATH=/data/audit-log.json \ SECRETS_PATH=/data/secrets.json \ IPAM_PATH=/data/ipam.json CMD ["node", "src/index.js"]