FROM node:22

# install chrome and fake x server
RUN apt update
RUN apt install -y xvfb 
RUN apt install -y wget 
RUN apt install -y dpkg

# install rust for adblock npm package
# Install Rust using rustup in non-interactive mode
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

# Ensure that the Rust binaries are in PATH
ENV PATH="/root/.cargo/bin:${PATH}"

# Confirm installation by printing Rust and Cargo versions
RUN rustc --version && cargo --version

RUN export DISPLAY=:99

RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN apt install -y ./google-chrome-stable_current_amd64.deb

# install typescript
RUN npm install -g typescript

# Add my software to the docker env
RUN mkdir /crabrawler
COPY . /crabrawler

WORKDIR /crabrawler

# Install all dependencies and Launch Worker
RUN npm i
RUN npx puppeteer browsers install chrome

ENTRYPOINT sh ./start_worker.sh
