2017-05-05 70 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