【发布时间】:2017-07-14 10:11:30
【问题描述】:
我有一个 docker compose 文件,它定义了一个将运行我的应用程序的服务和一个该应用程序依赖于运行的服务:
services:
frontend:
build:
context: .
volumes:
- "../.:/opt/app"
ports:
- "8080:8080"
links:
- redis
image: node
command: ['yarn', 'start']
redis:
image: redis
expose:
- "6379"
为了开发,这个 compose 文件公开了8080,以便我可以从浏览器访问正在运行的代码。
但是,在 jenkins 中,我无法公开该端口,因为同时运行的两个作业会在尝试绑定到 jenkins 上的同一端口时发生冲突。
有没有办法防止 docker-compose 绑定服务端口?就像--service-ports 标志的倒数?
对于上下文:
在 jenkins 中,我使用 docker-compose run frontend yarn test 运行测试,它不会映射端口,因此不是问题。
当我尝试对应用程序运行端到端浏览器测试时,会出现此问题。我使用容器针对正在运行的应用程序实例运行 CodeceptJS 测试。在这种情况下,我需要在运行测试之前启动前端,因为如果应用程序未启动,它们将失败。
【问题讨论】:
-
如果
CodeceptJS是一个容器,本质上你可以将它作为服务添加到撰写文件中,然后对于frontend服务包括CodeceptJS作为links候选者之一然后使用@ 987654330@ 而不是ports将 8080 公开给链接的服务。这行得通吗?
标签: docker docker-compose