【发布时间】:2020-07-22 16:44:37
【问题描述】:
我正在基于此类代理运行 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'
…
之后,我想向localhost:8080 发送一个 GET 请求,这是应该从这里提供网络应用程序的地方。但我明白了
Error: connect ECONNREFUSED localhost:8080
相同的 docker-compose 设置适用于我的开发人员。机器。端口转发设置正确(docker-compose配置文件中开启了8080:8080端口转发)
我认为这与我在 Jenkins 中所做的“Docker 之外的 Docker”设置有点相关 ????也许端口 8080 实际上似乎正在侦听我的管道代理的主机,不确定……
我很高兴能在这个问题上获得新的想法,我完全没有想到。
只是为了提供更多上下文:我想通过 docker-compose 运行 web-app + API 服务器,然后运行 Cypress(在 docker-compose 设置之外)通过 UI 进行 E2E 测试
【问题讨论】:
-
运行 lsof -i:8080 并检查是否有其他进程正在使用该端口
标签: docker jenkins docker-compose cypress docker-in-docker