我正在尝试创建一些旨在构建我的javascript应用程序的容器。
这是我需要做的事情:
这是我的项目dockerfile:
FROM node:6.9
# Enviroment variables
ENV HOMEDIR /data
RUN mkdir -p ${HOMEDIR}
WORKDIR ${HOMEDIR}
# install all dependencies
ADD package.json ./
RUN npm install
# add node content initially
ADD . .
CMD CI=true npm test && npm run build && npm run test:acceptance
事实是,当我开始验收测试时,我需要使用selenium服务器和phantomjs浏览器。这样,感谢stackoverflow社区,我创建了一个看起来像这样的docker-compose.yml文件:
version: '2'
services:
hub:
image: selenium/hub
ports:
- "4444:4444"
phantomjs:
image: akeem/selenium-node-phantomjs
depends_on:
- hub
links:
- hub
app:
build: .
depends_on:
- hub
- phantomjs
我的selenium-phantomjs很好地连接到我的selenium / hub,而selenium可以在我的主机上的localhost:4444上找到。
我真正的问题是我的实现验收测试的工具(webdriverio)似乎无法联系selenium服务器,我也不知道为什么。
我有以下堆栈:
app_1 | [08:24:07] COMMAND POST "/wd/hub/session"
app_1 | [08:24:07] DATA {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"maxInstances":5,"browserName":"phantomjs","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.6.1","name":"webdriverio"}}}
app_1 | ERROR: Couldn't connect to selenium server
app_1 | phantomjs
app_1 | Error: Couldn't connect to selenium server
app_1 |
app_1 | Wrote xunit report to [./xunit].
有什么建议吗?
感谢您的帮助
答案 0 :(得分:1)
如果您从另一个容器中运行测试脚本,则wd_host
参数需要设置为http://hub:4444/wd/hub
,而不是http://localhost:4444/wd/hub
(默认值)。
links:
字段使hub
在主机名hub
下可用,而不是localhost
到另一个容器。
ports:
字段仅用于访问主机上的容器,它不会影响容器本身可以访问的容器。