我正在基于这样的代理运行 Jenkins 工作:
pipeline {
agent {
docker {
image 'cypress/base:10'
args '-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/local/bin/docker-compose:/usr/local/bin/docker-compose -u root'
}
}
…
注意: docker
并docker-compose
安装到我的代理容器中,以便能够在管道阶段内运行 docker 容器(“Docker 之外的 Docker”设置)
在管道中,我开始docker-compose
设置包含 2 个容器 - 服务器和 webapp
…
sh 'docker-compose up --build --detach'
…
之后,我想向 发送一个 GET 请求localhost:8080
,这是应该从那里提供网络应用程序的地方。但我明白了
Error: connect ECONNREFUSED localhost:8080
相同的 docker-compose 设置适用于我的开发人员。机器。端口转发设置正确(docker-compose
配置文件中启用了8080:8080端口转发)
我认为这与我在 Jenkins 中所做的“Docker 之外的 Docker”设置有些相关,也许端口 8080 实际上似乎正在侦听我的管道代理的主机,不确定……</p>
我会很高兴在这个问题上获得新的想法,我完全没有想到这个。
只是为了提供更多上下文:我想通过 docker-compose 运行 web-app + API 服务器,然后运行 Cypress(在 docker-compose 设置之外)通过 UI 进行 E2E 测试