Ai / Dockerfile
fourmovie's picture
update space
bce29b9
# Stage 1: Build Node.js dependencies
FROM node:20-alpine AS node-builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install --omit=dev
# Stage 2: Final image with Python and Node.js runtime
FROM python:3.9-slim
WORKDIR /app
# Instal Node.js dan npm di stage akhir (penting untuk PATH dan eksekusi)
RUN apt-get update && \
apt-get install -y curl && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs && \
# Fix untuk Matplotlib permission
mkdir -p /app/.cache/matplotlib && \
chmod -R 777 /app/.cache && \
rm -rf /var/lib/apt/lists/* && apt-get clean
# Salin file-file Node.js dan JavaScript Anda
COPY package.json package-lock.json ./
COPY src ./src
# Instal Node.js dependencies di stage akhir juga, sebagai cadangan kuat
RUN npm install --omit=dev
# Install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Salin sisa file aplikasi Anda
COPY . .
# Pastikan start.sh punya izin eksekusi
RUN chmod +x start.sh
ENV MPLCONFIGDIR=/app/.cache/matplotlib
ENV NOVITA_API_KEY=${NOVITA_API_KEY}
# Expose port untuk Express (3000) dan Gradio (7860)
EXPOSE 3000
EXPOSE 7860
# Gunakan start.sh untuk menjalankan kedua server
CMD ["./start.sh", "node src/app.js"]