如何在azure容器服务中独立加载docker-selenium chrome?

时间:2018-06-22 19:06:33

标签: azure docker containers

根据github自述文件(https://github.com/SeleniumHQ/docker-selenium),chrome独立版需要选项“ -v / dev / shm:/ dev / shm”,但我正努力在文档中找到如何正确执行此操作。 / p>

完整的docker run命令如下:

docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.12.0-cobalt

之所以需要这样做,是因为我的测试由于未启用此选项而特别失败。

当前我的azure命令如下:

az container create --resource-group ${resourceGroup} --name ${containerName} --image selenium/standalone-chrome:3.12.0-cobalt --dns-name-label ${dnsNameLabel} --ports 4444

我一直在尝试使用--azure-file-volume选项,但没有成功。任何帮助将不胜感激。

编辑:

在弄清楚这一点之前,我决定使用Azure vms。使用已安装docker的vm映像并启动docker-selenium容器。它编写脚本的速度或快度并没有那么快,但是可以完成工作,而不会出现启动Docker容器的选项问题。对于任何决定走这条路的人,这里是我的虚拟机云初始化代码。

#cloud-config
package_upgrade: true
package_reboot_if_required: true
runcmd:
- apt-get update
- curl -fsSL https://get.docker.com/ | sh
- curl -fsSL https://get.docker.com/gpg | sudo apt-key add -
- sudo docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.12.0-cobalt

1 个答案:

答案 0 :(得分:2)

虽然无法使用Azure CLI进行此操作,但是可以使用Azure资源管理器模板部署。

创建部署模板文件,例如: selenium-aci-standalone-example.json

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "dnsNameLabel": {
            "type": "String"
        }
    },
    "resources": [
        {
            "apiVersion": "2018-06-01",
            "location": "[resourceGroup().location]",
            "name": "[parameters('dnsNameLabel')]",
            "properties": {
                "containers": [
                    {
                        "name": "standalone-chrome",
                        "properties": {
                            "image": "selenium/standalone-chrome",
                            "ports": [{ "port": "4444", "protocol": "TCP" }],
                            "resources": { "requests": { "cpu": "1.0", "memoryInGb": "1.5" } },
                            "volumeMounts": [{"name": "devshm", "mountPath": "/dev/shm"}]
                        }                        
                    }
                ],
                "ipAddress": {
                    "ports": [{ "port": "4444", "protocol": "TCP" }],
                    "type": "Public",
                    "dnsNameLabel": "[parameters('dnsNameLabel')]"
                },
                "osType": "Linux",
                "volumes": [
                    {
                        "name": "devshm",
                        "emptyDir": {}
                    }
                ]
            },
            "type": "Microsoft.ContainerInstance/containerGroups"
        }
    ]
}

然后,您可以使用Azure CLI执行部署:

az group create -n selenium-standalone-rg -l westus2
az group deployment create -g selenium-standalone-rg --template-file .\selenium-aci-standalone-example.json --parameters dnsNameLabel=test-standalone-selenium-chrome

在节点容器上安装emptyDir/dev/shm,对于我们运行带有Azure容器实例的Selenium Grid可以解决此问题。似乎不可能直接控制卷的大小-并且我在ACI文档中找不到有关emptyDir卷的大小的信息-但是添加卷后,所有折断的管道错误在我们的测试运行中都消失了配置到我们的ARM模板。