2017-05-05 71 views
1

的第一部作品,我們有一個碼頭工人的網絡,像這樣:泊塢窗網絡不使用bash入口點

docker network create cdt-net 

然後,我有這樣的bash腳本,將啓動硒服務器:

cd $(dirname "$0") 
./node_modules/.bin/webdriver-manager update 
./node_modules/.bin/webdriver-manager start 

以上bash腳本是由該Dockerfile叫:

FROM openjdk:latest 

RUN apt-get update && \ 
     apt-get -y install sudo 

RUN mkdir -p /root/cdt-webdriver 
WORKDIR /root/cdt-webdriver 

COPY start-selenium-server.sh . 

ENTRYPOINT ["/bin/bash", "/root/cdt-webdriver/start-selenium-server.sh"] 

我將建立它像這樣:

docker build -t cdt-selenium . 

,然後像這樣運行:

docker run --network=cdt-net --name cdt-selenium -d cdt-selenium 

是我遇到的問題是,即使一切都是乾淨的,沒有錯誤,同樣多克爾網絡中的其他進程無法傾訴的硒服務器。

在另一方面,如果我使用一個預先存在的圖像,像這樣創建硒服務器:

docker run -d --network=cdt-net --name cdt-selenium selenium/standalone-firefox:3.4.0-chromium 

那麼事情是否按預期工作,我可以連接到其他進程的硒服務器在Docker網絡中。

任何人都知道我的bash腳本或Dockerfile可能有問題嗎?也許我手動創建的Selenium服務器沒有在正確的主機上偵聽?

下面是完整的Dockerfile供參考:

FROM openjdk:latest 

RUN apt-get update && \ 
     apt-get -y install sudo 


RUN sudo apt-get install -y curl 
RUN sudo apt-get install -y apt-utils 

RUN sudo apt-get -y update 
RUN sudo apt-get -y upgrade 

RUN sudo apt-get purge nodejs npm 
RUN curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - 
RUN sudo apt-get install -y nodejs 

RUN echo "before nodejs => $(which nodejs)" 
RUN echo "before npm => $(which npm)" 

RUN sudo ln -s `which nodejs` /usr/bin/node || echo "ignore error" 

RUN mkdir -p /root/cdt-webdriver 
WORKDIR /root/cdt-webdriver 

COPY start-selenium-server.sh . 

RUN rm -rf node_modules > /dev/null 2>&1 
RUN npm init -f || echo "ignore non-zero exit code" > /dev/null 2>&1 
RUN npm install webdriver-manager > /dev/null 2>&1 

ENTRYPOINT ["/bin/bash", "/root/cdt-webdriver/start-selenium-server.sh"] 
+1

我沒有選項'-d':'docker run --network = cdt-net --name cdt-selenium cdt-selenium'輸出: '/root/cdt-webdriver/start-selenium-server.sh:line 2:./node_modules/.bin/webdriver-manager:No such file or directory' and '/ root/cdt-webdriver/start-selenium -server.sh:第3行:./node_modules/.bin/webdriver-manager:沒有這樣的文件或目錄# – Cyrus

+0

是啊對不起,我從Dockerfile中刪除了一些簡單的行,只是爲了讓人們得到要點,我會粘貼原始問題中的完整Dockerfile。 –

+1

啓動後,「docker logs cdt-selenium」和「docker ps -f name = cdt-selenium」報告是什麼?或者當你在前臺運行容器時會發生什麼,沒有'-d'? – Matt

回答

1

只有當你泊塢窗圖片運行正常,您應該使用-d。在此之前使用-it

更改您webdriver-manager到全球安裝

RUN npm install -g webdriver-manager > /dev/null 2>&1 

ENTRYPOINT ["/bin/bash", "/root/cdt-webdriver/start-selenium-server.sh"] 

也能改變你start-selenium-server.sh

webdriver-manager update 
webdriver-manager start 

,並使用下方運行,並檢查是否有任何問題

docker run --network=cdt-net --name cdt-selenium -it cdt-selenium