我正在尝试使用github操作设置一个单元测试工作流。
有一个单元测试必须使用的docker容器。
在我的工作流程中,我拉取并运行docker镜像(在后台),然后运行一个本地go应用程序,通过与它交互来运行测试。
docker pull xxxx.dkr.ecr.us-west-2.amazonaws.com/my-container
docker run -d xxxx.dkr.ecr.us-west-2.amazonaws.com/my-container
sleep 10 # make sure container setup finishes
docker exec my-container apk add curl
docker exec my-container curl http://localhost:1234 -I
go test .
字符串
我可以将docker exec
放入容器中,并检查它是否成功运行,因此我知道容器实际上正在工作。
单元测试在本地工作,但是在github操作中,当我尝试连接到docker容器时,无论主机名如何,我都会收到来自go应用程序的错误:Post "http://127.0.0.1:1234": dial tcp 127.0.0.1:1234: connect: connection refused
个Post "http://localhost:1234": dial tcp [::1]:1234: connect: connection refused
个
即使在运行一个有名字的容器并尝试连接之后,我还是得到一个错误:Post "http://my-container:1234": dial tcp: lookup my-container: Temporary failure in name resolution
我相信更简单的解决方案是使用github actions services
来运行容器,但我不知道如何从私有ECR中拉取。
感谢任何帮助!
2条答案
按热度按时间ergxz8rk1#
我发现了我的问题,即使我在Dockerfile中有
EXPOSE
,我也需要运行带有端口标志docker run -p 1234:1234 ...
的容器才能从主机访问它。cigdeys32#
字符串