File size: 4,410 Bytes
5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 84989a5 5b59a7e 8b745f4 84989a5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# Use the official Python 3.9 image as the base image
FROM python:3.11
# Expose the port
EXPOSE 7860
# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
# Set the PYNGROK_CONFIG environment variable
ENV PYNGROK_CONFIG /tmp/pyngrok.yml
# Set the NGROK_PATH environment variable to a writable location
ENV NGROK_PATH /tmp/ngrok
# Copy requirements.txt into the container
COPY requirements.txt .
# RUN apt-get update
# RUN apt-get install -y wget
# RUN wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# RUN apt-get install ./google-chrome-stable_current_amd64.deb -y
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
RUN apt-get -y update
RUN apt-get install -y google-chrome-stable
# install chromedriver
RUN apt-get install -yqq unzip
RUN wget -O /tmp/chromedriver-linux64.zip https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/119.0.6045.105/linux64/chromedriver-linux64.zip
RUN unzip /tmp/chromedriver-linux64.zip chromedriver-linux64/chromedriver -d /usr/local/bin/
RUN apt install wget -y
RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.32.0/geckodriver-v0.32.0-linux64.tar.gz
RUN tar -xzvf geckodriver-v0.32.0-linux64.tar.gz -C /usr/local/bin
RUN chmod +x /usr/local/bin/geckodriver
RUN geckodriver -V
# RUN add-apt-repository p?pa:mozillateam/ppa -y
RUN apt install firefox-esr -y
RUN which firefox-esr
# RUN apt-get install firefox-geckodriver
# Upgrade pip and install the required packages
RUN pip install --upgrade pip && \
pip install -r requirements.txt
# Install sudo and create the necessary directories before copying the files
RUN apt-get update && \
apt-get install -y sudo && \
mkdir -p /code/image
RUN apt-get install -y socat
# RUN socat TCP-LISTEN:8888,fork PROXY:your-auth-proxy-server:proxy-port,proxyauth=user:pa
# RUN socat TCP-LISTEN:8888,fork PROXY:http://p.webshare.io:80,proxyauth=hnbynugo-rotate:2491y5ds75e7 &
RUN nohup socat TCP-LISTEN:8888,fork PROXY:http://p.webshare.io:80,proxyauth=hnbynugo-rotate:2491y5ds75e7 > socat.log 2>&1 &
# RUN socat TCP-LISTEN:8888,fork PROXY:http://p.webshare.io:80,proxyauth=hnbynugo-rotate:2491y5ds75e7
# Creates a non-root user with an explicit UID and adds permission to access the /code folder
RUN adduser -u 5678 --disabled-password --gecos "" appuser && \
usermod -aG sudo appuser && \
usermod -aG root appuser && \
chown -R appuser:appuser /code
# Create the pyngrok bin directory and set the ownership and permissions for appuser
RUN mkdir -p /usr/local/lib/python3.9/site-packages/pyngrok/bin && \
chown -R appuser:appuser /usr/local/lib/python3.9/site-packages/pyngrok/bin && \
chmod -R 777 /usr/local/lib/python3.9/site-packages/pyngrok/bin
RUN mkdir -p /.ngrok2 && \
chown -R appuser:appuser /.ngrok2 && \
chmod -R 777 /.ngrok2
RUN mkdir /.local
RUN chmod -R 777 /.local
RUN apt-get update && \
apt-get install -y curl
RUN echo "deb http://deb.debian.org/debian/ unstable main contrib non-free" >> /etc/apt/sources.list.d/debian.list
# RUN apt install firefox-esr && \
# apt install geckodriver
# Set the working directory and copy the files
WORKDIR /code
# Set the ownership and permissions for the /code directory and its contents
RUN chown -R appuser:appuser /code && \
chmod -R 777 /code
COPY . /code
# RUN chown -R appuser:appuser /code/data.csv && \
# chmod -R 777 /code/data.csv
# Copy the pyngrok.yml configuration file
COPY pyngrok.yml /tmp/pyngrok.yml
# Set the TRANSFORMERS_CACHE environment variable to a cache directory inside /tmp
ENV TRANSFORMERS_CACHE /tmp/transformers_cache
ENV TORCH_HOME /tmp/torch_cache
# USER appuser
# Start the application using pyngrok
# CMD python main.py
# Get the public IP address and display it
RUN curl -s https://api.ipify.org | xargs echo "Public IP:"
RUN pip install gunicorn
# Start the Uvicorn server
# ENTRYPOINT ["python", "main.py"]
# CMD ["sh", "-c", "python main.py & sleep infinity"]
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860","--workers","1"]
# CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] |