Docker网络不适用于bash入口点

时间:2017-05-05 23:33:16

标签: bash selenium docker dockerfile

首先,我们有一个像这样的Docker网络:

docker network create cdt-net

然后我有了这个bash脚本,它将启动一个selenium服务器:

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网络中的其他进程也无法与selenium服务器通信。

另一方面,如果我使用预先存在的图像创建一个selenium服务器,如下所示:

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

然后事情按预期工作,我可以从Docker网络中的其他进程连接到selenium服务器。

任何人都知道我的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"]

0 个答案:

没有答案