【问题标题】:Two Docker Containers and Azure Deployment两个 Docker 容器和 Azure 部署
【发布时间】:2021-12-28 20:06:52
【问题描述】:

我想部署到 Azure,python 脚本将使用 Selenium 库在一天中的特定时间对各种网站进行一些自动化测试。

我想在 Azure 中使用 Docker。

我目前的想法是我必须开发一个 docker compose 脚本来:

  • 在端口 4444 上部署一个 Selenium 独立 chrome 映像。
  • 使用一些 Python 映像部署另一个容器,并在其中使用 CRON 运行我的 Python 脚本
  • 因为我有 2 个彼此不了解的容器,所以我认为我必须运行 docker 命令来设置网络,以便这 2 个容器可以相互通信。这是否包含在 docker-compose 脚本中?

你可以说我对这一切有点陌生 - 我的想法是对的还是我把它弄得太复杂了?

【问题讨论】:

    标签: python docker selenium cron


    【解决方案1】:

    我认为所有这些都可以在一个容器中完成。我认为这两种方法都是可行的,但您认为撰写文件需要网络定义是正确的。

    举个例子:

    FROM python:3.8
    
    COPY . /app
    WORKDIR /app
    
    RUN mkdir __logger
    
    # install google chrome
    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 to avoid crash
    ENV DISPLAY=:99
    
    RUN pip install --upgrade pip
    
    RUN pip install -r requirements.txt
    
    CMD ["python", "./app.py"]
    

    Example source

    【讨论】:

    • 所以这不是使用 Selenium 图像本身 - 您实际上是在将 Chrome 安装到环境中,然后从那里运行 python 脚本(显然有相关的 Selenium 导入语句等)
    • 正确。如果您想在单个容器中运行它,这只是您将拥有的另一个选项。这两个选项都是可行的,并且网络选项可能会提供关注点分离。我想这最终取决于您最终需要的过程的弹性;听起来这些无论如何都会按计划进行,所以为了简单起见,这可能是有意义的。
    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多