| FROM node:latest | |
| # Install necessary packages including Chromium and XVFB | |
| RUN apt-get update && apt-get install -y \ | |
| wget \ | |
| gnupg \ | |
| ca-certificates \ | |
| apt-transport-https \ | |
| chromium \ | |
| chromium-driver \ | |
| xvfb \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Set the environment variable for Chromium binary | |
| ENV CHROME_BIN=/usr/bin/chromium | |
| # Set the working directory inside the container | |
| WORKDIR /app | |
| # Copy package.json and package-lock.json (if exists) to leverage Docker cache | |
| COPY package*.json ./ | |
| # Install Node.js dependencies | |
| # Using `npm ci` is often preferred in Docker for reproducible builds if you have package-lock.json | |
| # Otherwise, `npm install` is fine. `npm update` is generally not needed here. | |
| RUN npm install | |
| # Copy the rest of your application code into the container | |
| COPY . . | |
| # Expose the port your Node.js application listens on (7860 as per your app.js) | |
| EXPOSE 7860 | |
| # Command to run your Node.js application | |
| # This will keep the container running as long as app.js is active | |
| CMD ["node", "app.js"] |