TKK_E32230814/railway-worker/Dockerfile

46 lines
1.3 KiB
Docker

# ===================================================================
# Dockerfile untuk ApsGo Railway Worker
# Background service untuk IoT automation dengan BullMQ + Redis
# ===================================================================
# Base image: Node.js 18 LTS (Alpine untuk size kecil)
FROM node:18-alpine
# Metadata
LABEL maintainer="ApsGo Team"
LABEL description="Railway Worker untuk ApsGo - 24/7 IoT Automation"
LABEL version="1.0.0"
# Set working directory
WORKDIR /app
# Copy package files dulu (untuk leverage Docker cache)
COPY package.json package-lock.json* ./
# Install dependencies
# --production: hanya production dependencies (tanpa devDependencies)
# --silent: suppress npm warnings
RUN npm install --production --silent
# Copy source code
COPY worker.js ./
# Environment variables (akan di-override oleh Railway)
ENV NODE_ENV=production
ENV LOG_LEVEL=info
# Health check (optional - Railway bisa monitor via process)
# Cek apakah process masih berjalan setiap 30 detik
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD node -e "process.exit(0)"
# Expose port (OPTIONAL - worker tidak butuh port)
# Tapi tetap define untuk dokumentasi
# EXPOSE 3000
# User non-root untuk security (best practice)
USER node
# Start command: jalankan worker
CMD ["node", "worker.js"]