你最初的想法是正确的。设置时,我通常使用像这样的 docker-compose 文件......
#docker-compose.yml
version: '2'
services:
backend:
build: ./backend
command: <your django startup command>
db:
image: <postgres or whatever>
frontend:
build: ./frontend
command: <npm start or equivalent>
ports:
- "80:80"
然后,我会运行我的测试
docker-compose run --rm frontend <MY TESTING COMMAND HERE>
Docker-compose 为您处理 docker 网络的东西——在这种情况下,您的前端将能够通过http://backend访问您的后端:。Protractor 和 npm 以及所有有趣的东西都安装在您的前端容器中。
你还没有想到的一个主要痛点是量角器需要一个显示器才能工作——它不能与像 phantomjs 这样的无头浏览器一起工作,而你的 docker 容器通常不会提供这种浏览器。这个 repo 是一个如何安装真实浏览器并为其提供假显示以便它可以在容器中工作的示例...... https://github.com/mark-adams/docker-chromium-xvfb,基本上替换带有 shell 脚本的 chrome 启动脚本,该脚本启动 xvfb 接口并将浏览器附加到它。