如何在Docker容器中使用PhantomJS的附加参数?

时间:2016-06-12 08:39:27

标签: docker phantomjs dockerfile

我有一个PhantomJS的docker容器。它有效,但我不能为phantomjs添加任何参数:

docker run —rm fizzka/phantomjs-source-capture http://phantomjs.org

这是工作

docker run —rm fizzka/phantomjs-source-capture --proxy=185.72.225.18:3128 http://phantomjs.org

它不起作用。我该怎么做,并改变我的代码?

Dockerfile:

FROM wernight/phantomjs
COPY src/printSource.js /
ENTRYPOINT ["phantomjs", "printSource.js"]

CMD ["--help"]

和我的printSource.js

var system = require('system');

var url = system.args[1];

if (!url || url == '--help') {
    console.log("Usage: <docker-image-run> URL");
    phantom.exit();
}

var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36';

page.open(url, function (status) {
    if (status !== 'success') {
        console.log('Unable to load the address!');
        phantom.exit();
    } else {
        window.setTimeout(function () {
            // page.render(output);
            console.log(page.content);
            phantom.exit();
        }, 2000);
    }
})

2 个答案:

答案 0 :(得分:1)

您尝试运行的命令最终为:

phantomjs printSource.js --proxy=185.72.225.18:3128 http://phantomjs.org

但是,从phantomjs cli ref开始,您需要在js文件之前传递选项(如--proxy),以便将其传递给phantomjs而不是js脚本。

答案 1 :(得分:1)

您可以尝试

FROM wernight/phantomjs
COPY src/printSource.js /
ENTRYPOINT ["phantomjs", "printSource.js", "--ignore-ssl-errors=true", "filename=filename", "sessionId=<sesssionId>", "domain=localhost", "url=<phantomjs host address>"]

这是您可以添加更多命令参数的方式。