【问题标题】:Docker for Mac and --host optionDocker for Mac 和 --host 选项
【发布时间】:2016-09-02 15:37:52
【问题描述】:

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

【问题讨论】:

    标签: mongodb docker protractor docker-for-mac


    【解决方案1】:

    从图片页面:

    为什么 --net=host?

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

    【讨论】:

    • 是的。但是我认为这个选项在使用 Docker for Mac 时是不稳定的。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    相关资源
    最近更新 更多