我已经在docker上运行了一个AWS EC2实例。使用docker-compose,我在一个容器中运行了詹金斯。我有一个jenkins管道,用于检出我的存储库(这是一个Djano应用程序,带有docker文件)。然后,我的管道使用Docker文件构建docker映像。这是在主机docker守护程序上构建的,因为我已将这些卷映射到docker-compose文件中
volumes:
- /var/run/docker.sock : /var/run/docker.sock
该映像已成功构建,我可以使用jenkins管道在该映像中运行命令
img = docker.build(....)
img.inside{
sh '.....'
}
但是当我尝试使用来运行Django测试
img.inside{
sh 'python manage.py test'
}
从TestCase继承的测试成功运行。但是我有一些测试,它们是StaticLiverServerTestCase的子集,它们使用硒。尝试初始化Webdriver实例时出现错误:
browser = WebDriver()
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: address not available.
这些测试可以在本地计算机上完全相同的设置上成功运行
docker-compose run web python manage.py test
我的猜测是,AWS安全组和端口访问可能有问题。 LiveServerTestCase可能通过尝试使用AWS安全组不允许的端口。但是我尝试启用从内部流量到所有端口的TCP访问,但这也行不通。
请让任何人遇到类似的问题或对我有任何提示。