双Docker容器配合Azure部署Selenium Python自动化测试方案咨询
你的部署规划思路合理,不存在过度复杂化的问题,且专属网络配置完全可以直接写入docker-compose脚本,不需要额外执行Docker命令手动创建。
网络配置说明
Docker Compose 默认会为当前编排的所有服务自动创建一个专属的隔离桥接网络,同个docker-compose.yaml中定义的所有服务默认会加入这个网络,彼此之间可以直接使用服务名作为域名互相访问,无需额外配置。
如果需要自定义网络的网段、驱动等参数,也可以在docker-compose中显式声明网络配置。
参考docker-compose.yaml示例
version: '3.8' services: # Selenium standalone chrome 服务 selenium-chrome: image: selenium/standalone-chrome:latest shm_size: 2g # 避免chrome崩溃的常用配置 # 不需要暴露端口到宿主机,同网络内服务可直接访问4444端口 restart: unless-stopped # Python自动化脚本服务 cron-runner: build: ./your-python-script-dir # 指向你的Python脚本目录,目录内要有对应Dockerfile depends_on: - selenium-chrome restart: unless-stopped # 可选:显式声明自定义网络,不写的话Compose会自动生成默认网络 networks: default: name: selenium-test-network driver: bridge
你的Python脚本中连接Selenium时,直接使用服务名作为访问地址即可:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://selenium-chrome:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME )
方案合理性说明
- 服务拆分合理:Selenium运行环境和业务脚本分离,避免依赖冲突,后续升级Selenium版本、切换浏览器内核都不需要修改你的脚本镜像,可维护性更高。
- 调度方案可行:在Python容器内置CRON实现定时触发是轻量化的实现方式,没有额外引入不必要的云服务依赖,适合快速落地。
- 如果你后续需要进一步简化运维,也可以直接使用Azure容器应用的定时触发器、Azure Functions定时任务替代容器内置CRON,省去自己维护CRON服务的工作量,但当前方案已经完全能满足你的需求,复杂度可控。
内容的提问来源于stack exchange,提问作者Vidar
相关产品推荐
相关产品推荐

