解决方法:
我正在尝试使用AWS EC2容器服务(ECS)来运行dockerized webdriver(Selenium)网格。根据docker-selenium github页面,如果我们想使用shared memory
映像上的chrome浏览器运行长时间运行的测试,则需要向docker容器添加一些mount a volume
或selenium-node-chrome。
在我的EC2实例上,当我执行]时>
df -h
我看到
/dev/shm
存在并具有3.7Gb of available free space
。但是,如果使用-v /dev/shm:/dev/shm
属性将卷安装到chrome-node容器中,则在运行测试时浏览器甚至无法启动。但是,如果我挂载父/dev
目录,测试似乎会运行几秒钟,然后我会收到“无法到达浏览器异常”,因为浏览器随后被关闭了(我能够通过VNC Viewer确认这一点)。这使我意识到通过ECS接口/ api装载卷将无济于事。[如果我通过传递
--shm-size
属性,而无需通过ECS路由而直接启动docker,则>]docker run --shm-size=2500m ....
测试似乎可以顺利进行。
但是,截至目前ECS clearly does not support the
--shm-size
属性。那么,如何解决或解决此问题并仍然使用ECS传递--shm-size
属性?是避免使用ECS的唯一方法,还是还有其他更好的方法?
我正在尝试使用AWS EC2容器服务(ECS)来运行dockerized webdriver(Selenium)网格。根据docker-selenium github页面,我们需要添加一些共享内存或安装一个...
解决方法:
添加以下(EntryPoint)命令作为dockerfile中的最后一行
--shm-size
我已经在local docker]中测试了此更改,尽管它需要ENTRYPOINT shm_dir=/dev/shm;umount $shm_dir;mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=*<size eg. 500m,1Gb>* shm $shm_dir && /bin/bash
或至少是--privileged
。我尚未在AWS上对其进行测试。
解决方法: