我一直在使用Docker for Mac(版本1.12.0-a(版本:11213))。
我试图使用image来运行我的量角器测试。
我使用此命令运行测试:
docker run -it --privileged --rm --net=host -v /dev/shm:/dev/shm -v $(pwd):/protractor webnicer/protractor-headless src/test/e2e/config/docker-config.js
这是我的配置文件:
exports.config = {
onPrepare: function() {
global.nodeModulesPath = '../../main/webapp/node_modules/';
global.mongoConnection = '127.0.0.1:27017';
global.dbName = 'DB_name';
var width = 1280;
var height = 768;
browser.driver.manage().window().setSize(width, height);
},
framework: 'jasmine2',
baseUrl: 'http://127.0.0.1:8080/my-app/',
specs: ['../tests/**/*.spec.js'],
restartBrowserBetweenTests: false,
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
isVerbose: true,
includeStackTrace: true
}
};
Mongo在容器内运行,webnicer/protractor-headless
容器可以看到Mongo并且可以插入所有数据(我检查了Mongo并通过docker logs
确认)。
但看起来webnicer/protractor-headless
无法看到部署应用的localhost:8080
。
看起来这与--net=host
选项有关,但我不确定。有人有想法或建议吗?
答案 0 :(得分:0)
从图片页面:
为什么--net = host?
仅在运行dockerised Protractor时才需要此选项 对主机上的localhost。想象一下这个场景:你运行一个http 在本地计算机上测试服务器,让我们在端口8000上说。您输入 您的浏览器http://localhost:8000,一切顺利。然后 你想运行dockerised量角器对抗相同的 本地主机:8000。如果您不使用--net = host,则容器将收到 bridged接口和它自己的loopback以及localhost 容器将引用容器本身。使用--net =主持你 允许容器共享主机的网络堆栈并正确引用 在针对localhost运行Protractor时向主机发送。