Docker for Mac和--host选项

时间:2016-09-02 15:37:53

标签: mongodb docker protractor docker-for-mac

我一直在使用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选项有关,但我不确定。有人有想法或建议吗?

1 个答案:

答案 0 :(得分:0)

从图片页面:

  

为什么--net = host?

     

仅在运行dockerised Protractor时才需要此选项   对主机上的localhost。想象一下这个场景:你运行一个http   在本地计算机上测试服务器,让我们在端口8000上说。您输入   您的浏览器http://localhost:8000,一切顺利。然后   你想运行dockerised量角器对抗相同的   本地主机:8000。如果您不使用--net = host,则容器将收到   bridged接口和它自己的loopback以及localhost   容器将引用容器本身。使用--net =主持你   允许容器共享主机的网络堆栈并正确引用   在针对localhost运行Protractor时向主机发送。