2016-06-12 81 views
0

我有一個PhantomJS的碼頭集裝箱。它的工作原理,但我不能把任何params用於在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); 
    } 
}) 

回答

1

您要運行的命令結束爲:

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

然而,從你所需要的phantomjs cli ref在js文件之前傳遞你的選項(如--proxy)它傳遞給phantomjs而不是你的js腳本。

+0

是的,謝謝,但我認爲把printSource.js放入容器中,你怎麼看待它? –

+0

您可以將它包含在容器中,但是當您將入口點定義爲第一個參數時,無法在其之前添加任何其他參數。你需要重新設計你的入口點,可能還需要一個shell腳本,以便在js參數的正確方面傳遞你的各種參數(例如'--help'仍然需要繼續)。或者完全從入口點刪除它,並在您的cli中包含printSource.js。 – BMitch

相關問題