Ben*_*nji 4 python selenium docker
我需要将我的小 Flask 应用程序放入 Docker 容器中,该应用程序可以检查我公司的客户安装了哪种类型的 Google 标签。为此,我需要有 selenium-wire 。你提供一个网站,然后你会得到一个 json 返回,告诉你安装了哪些标签(有点像http://gachecker.com/)。现在它与 Flask 应用程序配合得很好。当我尝试将其放入 Docker 时出现问题,这是我的 docker 脚本:
FROM python:3.9 WORKDIR /bziiit_checker_app
RUN pip install flask flask_restful requests BeautifulSoup4 selenium-wire undetected-chromedriver chromedriver-py
COPY ./app ./app
CMD ["python", "./app/main.py"]
Run Code Online (Sandbox Code Playgroud)
Once it's in Docker and try to run it, i get that message
"selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH"
Run Code Online (Sandbox Code Playgroud)
Which is a common issue when the chromedriver.exe file is not in the working directory. But it IS. Do i need to set the PATH when i'm creating the virtual environment, and if so how do i do that? Again, i'm good at A.I, terrible at app development.
I'm using Python 3.9 and am on Windows 10, Visual Studio Code, and Flask
Thank you
经过几天的痛苦和磨难,我终于解决了这个问题,所以这是我创建的 Docker 文件,用于让 chromedriver 在 Docker 容器中工作。
这适用于使用 VS code 的 Windows 10
FROM python:3.8
# Adding trusting keys to apt for repositories
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
# Adding Google Chrome to the repositories
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
# Updating apt to see and install Google Chrome
RUN apt-get -y update
# Magic happens
RUN apt-get install -y google-chrome-stable
# Installing Unzip
RUN apt-get install -yqq unzip
# Download the Chrome Driver
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.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
# Set display port as an environment variable
ENV DISPLAY=:99
COPY ./app ./app
WORKDIR /app
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
CMD ["python", "./main.py"]
Run Code Online (Sandbox Code Playgroud)
然后,在您的脚本中,将这些参数添加到 Chromedriver 的选项中,否则它会给您一条错误消息,告诉您“Chromedriver 已异常退出”
option = webdriver.ChromeOptions()
option.add_argument("--disable-gpu")
option.add_argument("--disable-extensions")
option.add_argument("--disable-infobars")
option.add_argument("--start-maximized")
option.add_argument("--disable-notifications")
option.add_argument('--headless')
option.add_argument('--no-sandbox')
option.add_argument('--disable-dev-shm-usage')
Run Code Online (Sandbox Code Playgroud)
我希望这能帮别人解决这个问题给我带来的所有头痛
| 归档时间: |
|
| 查看次数: |
4085 次 |
| 最近记录: |